Dwg转svg 转出来的文件是空的

项目引入aspose-cad-23.8.jar 做dwg转svg,转出来的svg是空的。
微信图片_20240125144034.png (127.8 KB)

@yuyifang,
你好。
您能否提供初始 DWG 文件以便我们测试此问题?

DWG 文件如下:
链接:("[[BL]]https://pan.baidu.com/s/1PRXpJluCpdaf6mSy85fj1Q[[/BL]]
提取码:t0p6
–来自百度网盘超级会员V5的分享

@yuyifang,
恐怕我无法从该服务下载。 您可以考虑在此处上传文件(压缩)或将其发送到我的电子邮件吗?

可以
D01地块总图【公示图】_t3郝佳构造.zip (1.5 MB)

@yuyifang,
这是我的结果。 可以附上你的结果吗? 您可以尝试调用 cadImage.updateSize(); 导出前。 有什么区别吗?
results.zip (2.5 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! :+1:

1 Like

@yuyifang,
we were happy to help, don’t hesitate contacting us in case of issues.