项目引入aspose-cad-23.8.jar 做dwg转svg,转出来的svg是空的。
微信图片_20240125144034.png (127.8 KB)
D01地块总图【公示图】_t3郝佳构造-SVG.zip (1.6 KB)
附件是我转出来的结果。
转换代码如下:
package com.cbim.xland.tianshan.gisconfig.util;
import com.aspose.cad.Color;
import com.aspose.cad.fileformats.cad.CadDrawTypeMode;
import com.aspose.cad.fileformats.cad.CadImage;
import com.aspose.cad.imageoptions.CadRasterizationOptions;
import com.aspose.cad.imageoptions.SvgOptions;
import com.aspose.cad.imageoptions.UnitType;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
public class AutoCADUtils {
/*
* CAD转SVG格式工具
* */
public static boolean dwgToSvg1(String fromUrl,String toUrl) {
// 验证License 若不验证则转化出的数据会有水印产生
// if (!getLicense()) {
// return false;
// }
// String cadFilePath = “/Users/Desktop/cad.dwg”;
String cadFilePath = fromUrl;
try{
File file = new File(cadFilePath);
InputStream inputStream = new FileInputStream(file);
String svgFilePath = toUrl.replaceAll(“dwg”, “svg”);
System.out.println(“svgFilePath替换后为:”+svgFilePath);
CadImage cadImage = (CadImage) CadImage.load(inputStream);
SvgOptions svgOptions = new SvgOptions();
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
rasterizationOptions.setPageHeight(1500);
rasterizationOptions.setPageWidth(1500);
rasterizationOptions.setNoScaling(false);
rasterizationOptions.setAutomaticLayoutsScaling(true);
//rasterizationOptions.setContentAsBitmap(true);
rasterizationOptions.setLayouts(new String[]{“Model”});
// rasterizationOptions.setDrawType(1);
rasterizationOptions.setDrawType(CadDrawTypeMode.UseObjectColor);
// rasterizationOptions.setBackgroundColor(Color.getBlue()); // SVG 全局背景色
rasterizationOptions.setUnitType(UnitType.Unitless);
rasterizationOptions.setDrawColor(Color.fromName(“Lime”));
//svgOptions
svgOptions.setVectorRasterizationOptions(rasterizationOptions);
// 设置一个值,该值指示是否必须将文本转换为形状
svgOptions.setTextAsShapes(false);
// 是否应重新调整子像素线宽 false不调整
svgOptions.setRescaleSubpixelLinewidths(true);
// svgOptions.setUseAbsoluteRescaling(true);
System.out.println(“开始转换为SVG,初始地址为:”+cadFilePath);
cadImage.save(svgFilePath, svgOptions);
System.out.println(“转换完成,存储地址为:”+svgFilePath);
return true;
}catch (Exception e){
e.printStackTrace();
}
return false;
}
public static void main(String[] args)
{
dwgToSvg1("D:\\data\\D01地块总图【公示图】_t3郝佳构造(1)\\D01地块总图【公示图】_t3郝佳构造.dwg","D:\\data\\D01地块总图【公示图】_t3郝佳构造(1)\\D01地块总图【公示图】_t3郝佳构造.svg");
}
}
@yuyifang,
所以,你的结果和我的一样。 它不是空的,但在左上角包含空白区域,并且曲线位于更靠近下面绘图的中心的位置。 最初的 DWG 绘图也有这个可用空间。
您可以通过添加来稍微改善结果
CadImage cadImage = (CadImage) CadImage.load(inputStream);
cadImage.updateSize();
ok,thank you very much!