The option is a flag in PdfExportSettings, which makes it
easy to start using the PDF Export functionality. If this flag is not set,
all settings relating to the plot area are taken from
PlotSetting, which is stored in the drawing database. The
ZoomToExtents option makes the PdfExport
module export a drawing as if the following options are set:
Plot area — extents
Scaled to fit
Center the plot
The following drawing is an example.
Export it to PDF with the ZoomToExtents option, and you get
this resulting PDF file.
However, you can also export only the entity
located in the center. The following code block shows how to do it.
// read the drawing
OdDbDatabasePtr pDb = m_pHostApp.readFile(inputFile);
// get the pointer to the entity using its ID
OdDbEntityPtr pRect = OdDbEntity::cast(pDb->getOdDbObjectId( OdDbHandle(0x2AB)).safeOpenObject(OdDb::kForRead));
if (pRect.isNull())
throw OdError(eNullEntityPointer);
Note: In this example, OdDbHandle(0x2AB)
is the hardcoded handle, and it was copied from a particular
drawing. You should replace 0x2AB with your own handle
from the drawing you are working with.
// get the entity extents:
OdGeExtents3d ext;
pRect->getGeomExtents(ext);
// get access to the plot settings:
OdDbObjectId idLayout = OdDbBlockTableRecordPtr(pDb->getActiveLayoutBTRId().safeOpenObject())->getLayoutId();
OdDbLayoutPtr pLayout = idLayout.safeOpenObject(OdDb::kForWrite);
OdDbPlotSettings *pPlotSettings = pLayout.get();
// set the necessary plot area:
OdDbPlotSettingsValidatorPtr pValidator = pDb->appServices()->plotSettingsValidator();
pValidator->setPlotWindowArea(pPlotSettings, ext.minPoint().x, ext.minPoint().y, ext.maxPoint().x, ext.maxPoint().y);
pValidator->setPlotType(pPlotSettings, OdDbPlotSettings::kWindow);
pValidator->setPlotCentered(pPlotSettings, true);
pValidator->setStdScaleType(pPlotSettings, OdDbPlotSettings::kScaleToFit);
// export the drawing:
OdPdfExportModulePtr pPdfModule = ::odrxDynamicLinker()->loadApp(OdPdfExportModuleName);
OdPdfExportPtr exporter = pPdfModule->create();
PDFExportParams params;
params.setDatabase(pDb);
params.setExportFlags((PDFExportParams::PDFExportFlags)(params.exportFlags() & (~PDFExportParams::kZoomToExtentsMode)));
OdUInt32 errCode = exporter->exportPdf(params);