Cad转换pdf为什么有两条黑块

image.png (28.2 KB)

如上图转换之后是三条黑区域,并且图片偏最右侧

使用的是Aspose-cad-24.6.1.jar

如下是原cad:
demo.zip (88.8 KB)

这是我编写的代码:

LoadOptions loadOptions = new LoadOptions();
loadOptions.setSpecifiedEncoding(CodePages.SimpChinese);
CadImage cadImage = (CadImage)CadImage.load("D:\\demo.dwg",loadOptions);
CadRasterizationOptions cadRasterizationOptions = new CadRasterizationOptions();
//导出所有的布局:默认为false,导致只能导出第一个布局
cadRasterizationOptions.setExportAllLayoutContent(true);
//设置背景颜色
cadRasterizationOptions.setBackgroundColor(Color.getBlack());
cadRasterizationOptions.setPageWidth(cadImage.getWidth());
cadRasterizationOptions.setPageHeight(cadImage.getHeight());
cadRasterizationOptions.setAutomaticLayoutsScaling(true);
cadRasterizationOptions.setNoScaling(false);
//这一句是输出线条为彩色的关键
cadRasterizationOptions.setDrawType(CadDrawTypeMode.UseObjectColor);
for (int i = 0, size = cadImage.getLayers().size(); i < size; i++)
 {
      CadLayerTable layer = (CadLayerTable) cadImage.getLayers().get_Item(i);
      layer.setLineWeight((short) 0);
 }
PdfOptions pdfOptions = new PdfOptions();
pdfOptions.setVectorRasterizationOptions(cadRasterizationOptions);
cadImage.save("D:\\demo.pdf", pdfOptions);

@wangwei001

请您提供更多信息,例如您使用的代码和具体的转换设置,以便我们更好地帮助您解决问题。

@wangwei001,
你好。
默认情况下,我们会导出图纸中所有现有的布局,忽略那些自动创建且从未访问过的布局。此图纸包含模型和两个修改后的布局,因此它们全部显示出来。您可以尝试使用这个:

cadRasterizationOptions.setLayouts(new String[] { "Model" });

图像位于最右侧是因为绘图包含最左侧的隐藏实体,文件中绘图的大小包含所有实体(您可以在 AutoCAD 中执行“ZOOM Extents”并查看,请查看附加的图像)。除此之外,绘图还可能包含不正确的尺寸。无法事先知道这一点,只能观察此类导出结果。有一种方法可以重新计算仅包含可见部分的图像大小,请尝试一下:

cadImage.updateSize();

zoom.png (11.6 KB)

感谢解答。
还有一个小问题咨询下:
cadRasterizationOptions.setPageWidth(cadImage.getWidth());
cadRasterizationOptions.setPageHeight(cadImage.getHeight());
这两个参数一般设置多少。我看有的是这是1600*1600,这样本来是长方向的图像不会输出成正方形吗

@wangwei001,
这些尺寸定义了生成的 PDF 中画布的大小。宽度/高度比无论如何都会保留,因此我们在许多示例中使用了 1600,您可以经常看到它 :slight_smile: 您根本无法在选项中设置它们,它们将被自动评估。

设置它们的策​​略取决于您,取决于您的目标、文件类型以及输入和输出格式。例如,我们建议在导出为光栅位图格式时始终设置这些值。我们见过绘图尺寸(从 cadImage.getWidth/getHeight 获得)在文件中无限大、巨大或缺失的情况,这在导出为 PDF 时会造成麻烦。您需要根据您的经验以方便的方式进行设置。