公司实习中,需要实现网页端的cad图纸格式转换为svg且显示。结合网上代码- -,最终完成。
不过还是有一点没有想明白,就是最后转换成svg格式的时候,保存路径如果我用了相对路径,就会报错说找不到路径位置,用了绝对路径也必须要事先将文件夹先创建好才可以找到路径,不知道有没有大佬可以帮我解答一下这点问题。
public static Map<String, Object> saveDwgToSvg(HttpServletRequest request) throws Exception {
Map<String, Object> map = new HashMap<>();
String path = "/home/upload" + request.getServletContext().getContextPath() + "/svg/";
StandardServletMultipartResolver resolver = new StandardServletMultipartResolver();
MultipartHttpServletRequest req = resolver.resolveMultipart(request);
File saveDirectory = new File(path);
MultipartFile file = req.getFile("file");
if (!file.isEmpty()) {
String dwg = "dwg";
String sp = ".";
if (!dwg.equals(file.getOriginalFilename().substring(file.getOriginalFilename().indexOf(sp) + 1))) {
map.put("code", "0");
map.put("msg", "请上传dwg格式文件");
return map;
}
com.aspose.cad.Image cadImage = com.aspose.cad.Image.load(file.getInputStream());
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
rasterizationOptions.setPageWidth(1600);
rasterizationOptions.setPageHeight(1600);
rasterizationOptions.setAutomaticLayoutsScaling(true);
rasterizationOptions.setNoScaling(false);
rasterizationOptions.setContentAsBitmap(true);
rasterizationOptions.setLayouts(new String[]{"Model"});
rasterizationOptions.setDrawType(1);
SvgOptions svgOptions = new SvgOptions();
svgOptions.setVectorRasterizationOptions(rasterizationOptions);
// Set Graphics options
rasterizationOptions.getGraphicsOptions().setSmoothingMode(SmoothingMode.HighQuality);
rasterizationOptions.getGraphicsOptions().setTextRenderingHint(TextRenderingHint.AntiAliasGridFit);
rasterizationOptions.getGraphicsOptions().setInterpolationMode(InterpolationMode.HighQualityBicubic);
// Export to PDF by calling the Save method
String prefixFilePath = CreateStrUtil.createStrForLengthTime(6) + "";
String fileName = prefixFilePath + ".svg";
cadImage.save("D:" + path + fileName, svgOptions);
map.put("code", "1");
map.put("msg", "上传成功");
map.put("src", request.getServletContext().getContextPath() + path + fileName);
return map;
}
map.put("code", "0");
map.put("msg", "文件获取失败");
return map;
}
哦对了,还需要导入个文件才能正常使用,不知道为啥我的pom中找不到这个依赖,最后只好弄了个jar包放里面,最终能够正常运行,就是有点慢。= =
一枚萌新~