Close

Relief for ODA Team in Ukraine

Learn more
ODA Drawings SDK
Export a Single Drawing to PDF

The export process consists of several stages:

  1. Loading the PDF export module.
  2. Creating a PDF export instance.
  3. Setting the PDF export parameters.
  4. Calling the exportPdf() method of the exporter object.
  5. Analyzing the result of the export process.

First, an OdPdfExportModulePtr should be created. To do this, use the method loadApp() of the ODA global dynamic linker (OdRxDynamicLinker):

OdPdfExportModulePtr pModule = ::odrxDynamicLinker()->loadApp(OdPdfExportModuleName);

Then create a database to be exported (for example, through loading a drawing from a specified file) and a PDF exporter instance by calling the create() method of the PdfExportModule class instance:


//Create a custom Services instance
OdStaticRxObject >MyServices> svcs;
odInitialize(&svcs);

//Create a database and load the drawing into it (assuming that the drawing file name is passed into main function through the second element of argv array).
OdDbDatabasePtr pDb = svcs.readFile(argv[1]); 

  if (!pDb.isNull())
  {
    //creating exporter instance
    OdPdfExportPtr exporter = pModule->create();
  
  ...
  
  }
    

To set export parameters and flags, use the methods of the PDFExportParams class:


PDFExportParams params;

params.setDatabase(pDb);
params.setVersion(PDFExportParams::kPDFv1_5);

//creating output stream for writing to PDF file and setting the output parameter
params.setOutput(odSystemServices()->createFile(argv[2], Oda::kFileWrite, Oda::kShareDenyNo, Oda::kCreateAlways));
    

For a detailed description, see Export to PDF Parameters and Flags.

Additional export options (flags) can be specified with the setExportFlags() method of the PDFExportParams class.


PDFExportParams params;

params.setExportFlags(PDFExportParams::kDefault);
    

The flags property is a bit mask where each of the bits indicates whether the option is on or off. Export flags are described in the corresponding table.

Also see PDFExportParams class documentation in the API Reference for additional information about specifying export parameters and flag values.

When all parameters are set, PDF export can be performed by calling the exportPdf() method of the PDF exporter instance:

      
OdUInt32 errCode = exporter->exportPdf(params);
      
    

The exportPdf() method returns an error code that can be used for checking whether the export process successfully finished. Also you can use the exportPdfErrorCode() method which returns error message text:


OdString errMes = exporter->exportPdfErrorCode(errCode);
printf("\nexportPdf error returned : 0x%x. \n%s", (unsigned)errCode, (const char*)errMes);
    

Export errors are described below.

Identifier Error description
exOk (0x00000000) Export finished successfully.
exInternalError (0x00010000) Export failed: Internal exception occurred.
exHugeShxFont Export failed: Cannot convert a SHX font to PDF font format.
exInvalidPageParams Export failed: Paper size or margins are invalid.
exNullOutputStream Export failed: Output stream for writing the PDF document is NULL or not initialized.
exLayoutNotFound Export failed: Database doesn't specify a layout name.
exNullDatabase Export failed: Invalid database pointer (input pointer to database is null).
exUnsupportedVersion Export failed: Specified version of PDF document is not supported by ODA.
exWrongNumberOfPages Export failed: Invalid PDF document page counter value; number of layouts is not equal to number of pages.
exCannotRestorePaperFromLayout Export failed: Error occurred while getting paper parameters from the specified layout.
exCannotFillFontDescriptor Export failed: Cannot restore a font descriptor from the font.
exCannotOpenOverallVport Export failed: Layout with overall viewport is invalid.
exBadViewExtents Export failed: Cannot calculate view extents.
exLayersRequired_v15 Export failed: Layer support requires version 1.5 or higher for correct processing.
exInvalidImageDPI Export failed: Invalid resolution value (DPI).
exCannotStartPrcEngine Export failed: Missing PdfExport service.
exUseHLRConflictedWithEnablePRC Export failed: PRC support can be used only when hidden-line removal algorithm is not used during the export.
exPrcRequired_v16 Export failed: Version 1.6 or higher required for processing 3D entities.
exPdfExportServiceMissed Export failed: PdfExport service missed.
exOdError (0x00020000) Export failed: ODA base class error occurred.

See Also

Export to a PDF File

Set Parameters and Flags for PDF Export

Copyright © 2002 – 2022. Open Design Alliance. All rights reserved.