您可以将大型复杂图纸的一部分导出为 PDF,而不是导出整个图纸。例如,您可能只想导出下面蓝色突出显示的选定块:
您可以使用图形的 PlotSettings 中的 kWindow 区域导出为 PDF(如“将窗口绘图区域导出为 PDF”中所述),但如果其他实体或其部分位于此区域中,它们可能会出现在生成的 PDF 文件中。
将特定实体导出为 PDF 的更可靠方法是使用 OdDbSelectionSet 对象。
例如,使用以下代码片段:
- 读取数据库中的图形内容:
OdDbDatabasePtr pDb = pHostApp->readFile("SelectionSet.dwg"); - 设置 PDF 导出参数:
OdPdfExportModulePtr pPdfModule = ::odrxDynamicLinker()->loadApp(OdPdfExportModuleName); OdPdfExportPtr exporter = pPdfModule->create(); PDFExportParams params; params.setDatabase(pDb); params.setExportFlags(PDFExportParams::kZoomToExtentsMode); - 创建一个空的 OdSelectionSet 数组。然后创建一个 OdSelectionSet 对象,并将所需实体的标识符附加到其中。然后将 OdSelectionSet 对象附加到数组,并将该数组与 PDFExportParams 对象关联。
注意:上述代码片段中使用的数据库句柄(0xBE 和 0xAB)是硬编码的。您应该使用您图形数据库中的句柄。OdArraypSSets; OdDbSelectionSetPtr pSs = OdDbSelectionSet::createObject(pDb); pSs->append(pDb->getOdDbObjectId(OdDbHandle(0xBE))); pSs->append(pDb->getOdDbObjectId(OdDbHandle(0xAB))); pSSets.append(pSs); params.setSelectionSetsArray(pSSets);
- 导出图形:
OdUInt32 errCode = exporter->exportPdf(params);
输出的 PDF 文档:
上面的示例说明了如何导出只有一个布局的图形的一部分。让我们考虑一种从可能包含多个布局的更复杂图形中导出特定实体的常用方法。
要导出多个布局,请创建一个包含要导出的布局名称的数组。每个布局在输出 PDF 文件中都转换为单独的页面。
PDFExportParams 类接口提供了管理要导出到 PDF 文件的原始图形布局列表的方法:
- addLayout() — 将新的布局名称添加到要导出的布局数组中。
- setLayouts() — 设置包含要导出的布局名称的字符串数组。
- layouts() — 返回与 PDFExportParams 对象关联的当前包含要导出的布局名称的字符串数组。
有关导出布局的更多信息,请参阅“导出布局和设置 PDF 页面参数”。
设置要导出的布局数组后,您可以指定要导出的布局上的实体。对于某些布局,您可能希望导出所有实体。在这两种情况下,您都必须创建一个 OdDbSelectionSet 对象数组。此数组中的每个元素对应于图形数据库中导出的布局,并包含导出到 PDF 文件的布局实体的标识符。
OdDbSelectionSet 数组的大小必须与您要导出的图形布局数组的大小相同。要导出整个布局(属于该布局的所有实体),相应的 OdDbSelectionSet 元素必须为空(选择集不包含实体标识符)。
PDFExportParams 对象中导出的布局数组必须包含所有导出布局的名称。
例如,一个图形有两个布局,您想要导出属于第一个布局的特定实体以及第二个布局中的所有实体。假设导出的布局数组已经包含两个带有布局名称的元素。在这种情况下,您必须创建两个 OdDbSelectionSet 对象,尽管导出的实体仅在第一个布局中。然后,您将要从第一个布局导出的实体标识符添加到第一个 OdDbSelectionSet 对象中,并使第二个 OdDbSelectionSet 对象为空。
要将 OdDbSelectionSet 数组与处理导出参数的 PDFExportParams 类实例关联,请调用 setSelectionSetsArray() 方法。
此方法存在一个限制:选定的实体(或块)必须属于顶级块,例如模型空间或图纸空间。当实体属于非顶级块时,除非将其顶级父块添加到 OdDbSelectionSet 对象,否则不会将其导出到 PDF。反之,如果顶级块被附加到 OdDbSelectionSet 对象,则其所有子实体都将被导出。
PRC 对部分 PDF 导出的支持
使用 OdDbSelectionSet 数组进行部分 PDF 导出也适用于 PRC 数据。例如,下图显示了一个包含两个实体的图形:
您可以将所选实体的标识符添加到 OdDbSelectionSet 数组中,如上所述,并且只将实体导出为 3D PDF (PRC) 格式:
有关 PRC 的 PDF 导出的详细信息,请参阅使用 PRC 导出到 PDF。