Some test text!

Discord Logo

Chat with us

PDFTron is now Apryse, learn more here.

Php / Guides / Convert from CAD

Platform


Documentation


PDFTron is now Apryse, learn more here.

Convert CAD / DWG to PDF in PHP

CAD Module is a new optional add-on utility which can be used with Apryse SDK 7.0 or later to convert CAD documents to PDF while preserving layers without any external dependencies. Supported CAD formats include DWG, DWF, DXF, and DGN can be directly converted to PDF using the PDF.Convert.FromCAD method with this module. Beta support for RVT format is also available on Windows.

You can find more details about how to install CAD Module here .

Supported formats

File FormatSupported Versions
DGN V7, V8
DXF, DWF, DWGAutoCAD R12 and newer
RVT *All ✓
* RVT format is currently on beta support only for Microsoft Windows

Usage

To use the CAD Module, you must use the PDFNet.AddResourceSearchPath method with the path to the module's Lib/ folder to include the module files.

Requires the CAD module add-on
PDFNet::Initialize();
PDFNet::GetSystemFontList();    // Wait for fonts to be loaded if they haven't already. This is done because PHP can run into errors when shutting down if font loading is still in progress.
PDFNet::AddResourceSearchPath("../../../Lib/");
if(!CADModule::IsModuleAvailable()) {
  echo "Unable to run CAD2PDFTest: Apryse SDK CAD module not available.";
}

If the module has been successfully added, you can use the Convert.FromCAD method. This method requires that you pass in a PDFDoc object that will append converted pages to the specified PDF document.

$doc = new PDFDoc();
Convert::FromCAD($doc, $input_file_path.$filename);
$doc->Save($output_path.$output_file_name, 0);

Conversion options

You can also optionally provide a CADConvertOptions as an argument to change the PageHeight and PageWidth attributes for the conversion of the CAD document. If your document is of the RVT format, you can also set the RasterDPI and Sheets attributes to control the rasterization resolution and list of sheets to be converted (RVT beta support currently only available on Windows). You must call the AddSheets method multiple times depending on the number of sheets you would like to add.

$opts = new CADConvertOptions();
$opts.SetPageWidth(800);
$opts.SetPageHeight(600);

// RVT documents only:
$opts.SetRasterDPI(150)
$opts.AddSheets("sheet_id1")

Convert::FromCAD($doc, $input_file_path.$filename, $opts);

Layers

By default, layers present in the original CAD drawing will be preserved as Optional Content Groups (OCGs) in the PDF. OCGs can be extracted, edited, manipulated, and removed with Apryse SDK. They can also be rendered into a viewer where users can interact with them.

Sample

The CAD Module ships with the CAD2PDFTest sample which can be used to test the conversion functionality using provided test files or your own documents. The sample first initializes PDFNet, which is required for all Apryse SDK functionality, then uses PDFNet.AddResourceSearchPath to include the CAD Module. The same lines of code can be used to integrate the module in your application or project.

The CAD2PDFTest sample also shows how to check if a file is of RVT file format and uses CADConvertOptions to convert to PDF (currently only supported on Windows).

Troubleshooting

Fonts

For best results CADModule requires access to fonts (SHX and TTF) used in the drawing. If requisite fonts are not embedded in the drawing and not installed on your server, next best option is to install fallback fonts.

OpenGL

On Linux CADModule uses OpenGL API for rendering 3D objects. In a headless server environment (i.e., without monitors/graphical drivers) implementation of OpenGL specification needs to be provided. One such implementation is Mesa. On headless Linux you may need to install libgl1-mesa-dev, libx11-dev and libglu1-mesa-dev.

Get the answers you need: Support