Exporting DWG/DXF drawing and layouts into specified size
Export Model and all layouts into A4 PDF size
Aspose.CAD API allows you to export all sheets of the DWG/DXF file into specified physical PDF size. The following sample code sets up the size of the CadRasterizationOptions object to achieve desired PDF size. The size of A4 paper sheet is 210x297 millimeters or 8.27x11.69 inches and these values are used in the code.
CadRasterizationOptions cadRasterizationOptions = new CadRasterizationOptions(); | |
boolean isMetric = false; | |
double coefficient = 1.0; | |
switch (cadImage.getUnitType()) | |
{ | |
// it is possible to extend this with more types that may appear in drawings | |
case UnitType.Meter: | |
isMetric = true; | |
coefficient = 1.0; | |
break; | |
case UnitType.Millimeter: | |
isMetric = true; | |
coefficient = 0.001; | |
break; | |
case UnitType.Inch: | |
coefficient = 1.0; | |
break; | |
} | |
SizeF size; | |
if (isMetric) | |
{ | |
double metersCoeff = 1 / 1000.0; | |
double scaleFactor = metersCoeff / coefficient; | |
size = new SizeF((float)(210 * scaleFactor), (float)(297 * scaleFactor)); | |
cadRasterizationOptions.setUnitType(UnitType.Millimeter); | |
} | |
else | |
{ | |
size = new SizeF((float)(8.3f / coefficient), (float)(11.7f / coefficient)); | |
cadRasterizationOptions.setUnitType(UnitType.Inch); | |
} | |
cadRasterizationOptions.setPageSize(size); |
Export CAD Layouts to PDF in different size
Sometimes it is required to export layout into its physical size. The example below demonstrates the export of the drawing into multipage PDF where each page with layout content has its own physical PDF size. This example uses getLayoutPageSizes property.
CadRasterizationOptions cadRasterizationOptions = new CadRasterizationOptions(); | |
for (String layoutName : cadImage.getLayouts().getKeysTyped()) | |
{ | |
CadLayout layout = cadImage.getLayouts().get(layoutName); | |
if (layout.getLayoutName() == "Model") continue; | |
System.out.println(layout.getLayoutName()); | |
SizeF pageSize = GetPageSizeFromLayout(layout); | |
cadRasterizationOptions.getLayoutPageSizes().put(layout.getLayoutName(), pageSize); | |
} | |
private static SizeF GetPageSizeFromLayout(CadLayout layout) | |
{ | |
boolean isLandscape = IsLayoutLandscape(layout); | |
float pageWidth; | |
float pageHeight; | |
if (layout.getPlotPaperUnits() == CadPlotPaperUnits.PlotInInches) | |
{ | |
pageWidth = (float)MillimetersToInches(layout.getPlotPaperSize().getWidth()); | |
pageHeight = (float)MillimetersToInches(layout.getPlotPaperSize().getHeight()); | |
} | |
else | |
{ | |
pageWidth = (float)layout.getPlotPaperSize().getWidth(); | |
pageHeight = (float)layout.getPlotPaperSize().getHeight(); | |
} | |
if (isLandscape) | |
{ | |
return new SizeF(pageHeight, pageWidth); | |
} | |
else | |
{ | |
return new SizeF(pageWidth, pageHeight); | |
} | |
} | |
private static boolean IsLayoutLandscape(CadLayout layout) | |
{ | |
short plotRotation = layout.getPlotRotation(); | |
return plotRotation == CadPlotRotation.Clockwise90Degrees || plotRotation == CadPlotRotation.Counterclockwise90Degrees; | |
} | |
private static double MillimetersToInches(double millimeters) | |
{ | |
double MillimetersToInchesFactor = 0.0393701; | |
return millimeters * MillimetersToInchesFactor; | |
} |