Aspose.cad 在执行CAD转PDF转换速度很慢,有什么方法可以提高转换速度么

aspose.cad 在执行CAD转PDF事转换速度很慢,有什么方法可以提高转换速度么?

@wangbinbin,
有几个原因会导致转换速度变慢。请提供初始文件和转换代码,以便我们进行调查。

@wangbinbin,

  1. 转换逻辑似乎没问题。100k 个实体需要 10 秒,这是一个不错的时间,我们可以尝试优化,但我不确定是否可以对其进行大量优化。您的附件文件只有 28 个实体,我们需要调查包含 100k 个实体的原始文件以查找性能问题。我们也可以看到您附加的文件存在一些问题,并将尝试修复它们,但对于其他文件,原因可能完全不同。
  2. 据我所知,最新版本已修复此问题,您需要等到下一个 Java 版本发布。我已创建 CADJAVA-11772 问题来跟踪此问题,并已附加文件以显示其外观。

A2_零件.pdf (143.9 KB)

  1. 不幸的是,回答这个问题很复杂,因为有很多原因可能会影响。通常,您可以迭代文件中的实体,删除不必要的对象和实体,然后导出。但删除可能取决于实体类型、文件版本等。您可以打印实体集合中的所有类型的实体,以了解绘图的内容。请提供文件示例并更详细地描述所需的输出,以便我们更好地提供帮助。

请注意:我已修改您的初始 zip 并从中删除了许可证文件。

<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-cad</artifactId>
    <version>19.9</version>
</dependency>
<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-cad</artifactId>
    <version>24.6.1</version>
</dependency>

还是转换这个A2_零件.dwg文件,使用相同的转换代码19.9 版本的aspose-cad 转换平均耗时在2秒左右24.6.1版本的aspose-cad 转换耗时都在10秒以上,同时也验证了几个20.x版本的,耗时平均在5秒左右,随着版本的增加,耗时也在跟着增加。24.6.1版本的有什么方式可以优化到和19.9 版本同样的性能么?

转换代码如下:

package com.test.aspose.cad;

import java.io.File;

import com.aspose.cad.CodePages;
import com.aspose.cad.InterpolationMode;
import com.aspose.cad.LoadOptions;
import com.aspose.cad.SmoothingMode;
import com.aspose.cad.TextRenderingHint;
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.PdfOptions;
import com.aspose.cad.imageoptions.RasterizationQuality;
import com.aspose.cad.imageoptions.RasterizationQualityValue;
import com.aspose.cad.imageoptions.UnitType;

public class CadConverterExample {
    static String picName = "A2_零件";
    static String sourcePath = "D:\\Aspose\\" + picName + ".dwg";
    static String targetDir = "D:\\Aspose\\";

    public static void main(String[] args) {
        // 创建输出目录
        File directory = new File(targetDir);
        if (!directory.exists()) {
            directory.mkdir();
        }

        long startTime = System.currentTimeMillis();

        LoadOptions loadOptions = new LoadOptions();
        loadOptions.setSpecifiedEncoding(CodePages.SimpChinese);

        // 读取图纸文件
        CadImage cadImage = (CadImage) CadImage.load(sourcePath, loadOptions);


        CadRasterizationOptions cadRasterizationOptions = new CadRasterizationOptions();
        cadRasterizationOptions.setPageHeight((float) cadImage.getHeight());
        cadRasterizationOptions.setPageWidth((float) cadImage.getWidth());
        cadRasterizationOptions.setAutomaticLayoutsScaling(true);
        cadRasterizationOptions.setNoScaling(false);
        cadRasterizationOptions.setLayouts(new String[] { "Model" });
        cadRasterizationOptions.setDrawType(CadDrawTypeMode.UseDrawColor);
        cadRasterizationOptions.setUnitType(UnitType.Unitless);
        cadRasterizationOptions.getGraphicsOptions().setSmoothingMode(SmoothingMode.HighQuality);
        cadRasterizationOptions.getGraphicsOptions().setTextRenderingHint(TextRenderingHint.AntiAliasGridFit);
        cadRasterizationOptions.getGraphicsOptions().setInterpolationMode(InterpolationMode.HighQualityBicubic);
        RasterizationQuality rasterizationQuality = new RasterizationQuality();
        rasterizationQuality.setArc(RasterizationQualityValue.Low);
        rasterizationQuality.setHatch(RasterizationQualityValue.Low);
        rasterizationQuality.setText(RasterizationQualityValue.Low);
        cadRasterizationOptions.setQuality(rasterizationQuality);


        PdfOptions pdfOptions = new PdfOptions();
        pdfOptions.setVectorRasterizationOptions(cadRasterizationOptions);

        cadImage.save(targetDir + "\\" + picName + ".pdf", pdfOptions);

        long endTime = System.currentTimeMillis();
        System.out.println("转换结束 耗时:" + (endTime - startTime) + "毫秒");
        cadImage.dispose();
    }

}

@wangbinbin ,
每个新版本都有新功能、错误修复、功能、新文件格式等。19.9 版本已有 5 年历史,但如果它适合您,您可以使用它。我们将调查此文件延迟的原因,并尝试在 CADJAVA-11773 范围内对其进行改进。