지정된 크기로 DWG/DXF 도면 및 레이아웃 내보내기

모델 및 모든 레이아웃을 A4 PDF 크기로 내보내기

Aspose.CAD API를 사용하면 DWG/DXF 파일의 모든 시트를 지정된 물리적 PDF 크기로 내보낼 수 있습니다. 다음 샘플 코드는 원하는 PDF 크기를 달성하기 위해 CadRasterizationOptions 객체의 크기를 설정합니다. A4 용지 크기는 210x297mm 또는 8.27x11.69인치이며 이 값들이 코드에서 사용됩니다.

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);

다양한 크기로 CAD 레이아웃을 PDF로 내보내기

때때로 레이아웃을 물리적 크기로 내보내야 할 필요가 있습니다. 아래 예제는 각 페이지가 레이아웃 내용을 가진 다중 페이지 PDF로 도면을 내보내는 것을 보여줍니다. 이 예제는 getLayoutPageSizes 속성을 사용합니다.

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;
}