导出为 PDF 时设置图纸尺寸和纸张尺寸

将图纸导出为 PDF 时可能会出现一个常见问题:导出的图纸在 PDF 阅读器中可能显示不正确。幸运的是,通常通过根据图纸尺寸设置合适的纸张尺寸即可快速解决。

以下是一些常见的输出 .pdf 文件显示不正确的情况:线条过粗并合并,细节不可见,甚至有时在导出的 PDF 中什么都看不清楚。

 

output .pdf files doesn’t look correct

 

这些问题最常见的原因是图纸尺寸与 PDF 导出所选纸张尺寸之间存在不一致。

假设我们正在尝试将一个具有巨大实际范围的实体图纸打印到一张小纸上。当然,最近的线条、文本字符等都将不正确。当图纸具有像 ANSI A4 或 Letter 这样的默认纸张尺寸,或者在使用 ODA Debug App (OdaMfcApp.exe) 中的默认选项“缩放至范围”并选择 A4 纸张尺寸导出为 PDF 时,通常会出现这种情况。

有几种方法可以解决此问题。第一种是设置符合图纸尺寸和布局打印设置的正确纸张尺寸,并且不使用“缩放至范围”选项。

PDFExportParams params;
params.setExportFlags(PDFExportParams::PDFExportFlags(params.exportFlags() & ~PDFExportParams::kZoomToExtentsMode));
OdDbPlotSettingsValidatorPtr pPlotValidator = pDb->appServices()->plotSettingsValidator();

OdDbLayoutPtr pLayout = OdDbLayoutPtr(pDb->currentLayoutId().safeOpenObject(OdDb::kForWrite));
OdDbPlotSettings *pPlotSettings = pLayout.get();

pPlotValidator->refreshLists(0);

OdResult res = pPlotValidator->setPlotCfgName(pPlotSettings, "DWG To PDF.pc3");
res = pPlotValidator->setCanonicalMediaName(pPlotSettings, OD_T("ISO_A1_(841.00_x_594.00_MM)"));

设置纸张尺寸的一种更简单的方法如下:

PDFExportParams params;
params.setExportFlags(PDFExportParams::PDFExportFlags(PDFExportParams::kDefault));
params.pageParams().resize(1, OdGsPageParams(420, 297));

在这两种情况下,生成的 .pdf 文件都可以在 PDF 阅读器中正确显示。

 

.pdf file can be properly displayed in a PDF reader

 

如果由于某种原因需要导出到小尺寸纸张,可以使用第三种方法。在这种情况下,请勿打印线宽:

OdDbLayoutPtr pLayout = OdDbBlockTableRecordPtr(pDb->getActiveLayoutBTRId().safeOpenObject())->getLayoutId().safeOpenObject(OdDb::kForWrite);
pLayout->setPrintLineweights(false);

使用此选项,所有线条都以零线宽打印,但会产生副作用。如果我们将 SHX 字体不作为几何图形导出,则与在大尺寸纸张上使用相同设置相比,文本(如果此类字体放置在 .pdf 文件中)可能会显得苍白。

 

export SHX fonts

 

这是由 SHX 字体在 .pdf 文件中的存储方式引起的。

导出为 PDF 是分发和共享图纸的好方法。希望这些技巧能帮助您创建始终美观的 .pdf 文件。

今天就开始行动

免费试用 ODA 软件 60 天。
无风险,无需信用卡。

免费试用