Java版cad转换pdf问题。

转换的pdf线条和文字很粗,还有下面的第1张共1张的数字1和金导体一层网版图怎么没按照预想的位置居中而是往右侧偏移了。
具体代码块:

LoadOptions loadOptions = new LoadOptions();
loadOptions.setSpecifiedEncoding(CodePages.SimpChinese);
CadImage cadImage = (CadImage)CadImage.load("D:\\demo.dwg",loadOptions);

CadRasterizationOptions cadRasterizationOptions = new CadRasterizationOptions();
cadRasterizationOptions.setBackgroundColor(Color.getBlack());
cadRasterizationOptions.setPageHeight((float) cadImage.getHeight());
cadRasterizationOptions.setPageWidth((float) cadImage.getWidth());
cadRasterizationOptions.setAutomaticLayoutsScaling(true);
cadRasterizationOptions.setNoScaling(false);
cadRasterizationOptions.setDrawType(CadDrawTypeMode.UseObjectColor);
cadRasterizationOptions.setUnitType(UnitType.Unitless);
RasterizationQuality rasterizationQuality = new RasterizationQuality();
rasterizationQuality.setArc(RasterizationQualityValue.High);
rasterizationQuality.setHatch(RasterizationQualityValue.High);
rasterizationQuality.setText(RasterizationQualityValue.High);
rasterizationQuality.setOle(RasterizationQualityValue.High);
cadRasterizationOptions.setQuality(rasterizationQuality);
PdfOptions pdfOptions = new PdfOptions();
pdfOptions.setVectorRasterizationOptions(cadRasterizationOptions);
cadImage.save("D:\\demo调整.pdf", pdfOptions);

关于文字和线条粗。如果把
cadRasterizationOptions.setPageHeight((float) cadImage.getHeight());
cadRasterizationOptions.setPageWidth((float) cadImage.getWidth());
换成
cadRasterizationOptions.setPageWidth(cadImage.getWidth()*100);
cadRasterizationOptions.setPageHeight(cadImage.getHeight()*100);
线条和字体就不粗了,但不知道为什么。这种解决方法靠谱吗。

demo.zip (216.0 KB)

这是cad。
我用版本是aspose-cad-24.6.1.jar

@wangwei001,
你好。
线条很粗,因为在绘图中线条的宽度被保留了下来,而绘图本身的尺寸很小。因此,您可以像示例中那样增加尺寸,也可以减小线条的宽度:

for (int i = 0, size = cadImage.getLayers().size(); i < size; i++)
{
	CadLayerTable layer = (CadLayerTable) cadImage.getLayers().get_Item(i);
	layer.setLineWeight((short) 0);
}

至于对齐问题,您能否添加一张在 CAD 软件中打开此图纸的屏幕截图,以便我们能够看到正确的对齐?

image.png (5.1 KB)

image.png (25.5 KB)

原始的cad在2楼已经上传了

楼下已附截图。
关于这个线条粗细,目前发现好像只需要
cadRasterizationOptions.setUnitType(UnitType.Kilometer);
这行代码就能解决。
和这个您给的答案设置有什么区别呢(虽然也能达到目的)?
for (int i = 0, size = cadImage.getLayers().size(); i < size; i++)
{
CadLayerTable layer = (CadLayerTable) cadImage.getLayers().get_Item(i);
layer.setLineWeight((short) 0);
}

@wangwei001,
谢谢,我可以确认该问题,我们已经创建了 CADJAVA-11894 任务来解决它。

线条看起来很粗,因为这些线条所在的图层的线宽很粗。导出为 PDF 时会保留此线宽,而且看起来很粗,因为 PDF 画布的大小(取决于绘图本身的大小)也很小。因此有两种方法:您可以将 PDF 画布扩展到千米,或者将 PageHeight 或 PageWidth 的值设置得较大。或者您可以修改图层中的线条宽度 - 这就是我的示例所做的。因此,仅缩放会使 PDF 画布的大小变大,但更改线宽可以保留它。您可以选择任何更适合您的便捷方式。

好像感谢,关于部分文字的偏移能否给个好的方法。

@wangwei001,
您能否提供有关该问题的更多详细信息?如果我们谈论的是上述线程中描述的数字“1”附近的移位文本 - 我们需要在未来版本中修复项目中的此错误。

暂时没有更多信息。
image.png (5.1 KB)

转换后的部分文字不居中 “1” 和 “金导体一层版图网”

image.png (25.5 KB)

两张图可以对比出来差异

@wangwei001,
明白了,谢谢。
我们将调查此问题的原因,并在我上面提到的 CADJAVA-11894 范围内修复它。一旦修复版本可用,我将更新此线程,您可以在此页面底部看到问题的状态。