การส่งออกแบบ DWG/DXF และเลเอาต์ไปยังขนาดที่กำหนด
ส่งออกโมเดลและเลเอาต์ทั้งหมดไปยังขนาด PDF A4
Aspose.CAD API ช่วยให้คุณสามารถส่งออกทุกแผ่นของไฟล์ DWG/DXF ไปยังขนาด PDF ที่กำหนดได้ ขนาดของแผ่นกระดาษ A4 มีขนาด 210x297 มิลลิเมตร หรือ 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 หลายหน้า โดยแต่ละหน้าที่มีเนื้อหาเลเอาต์จะมีขนาด 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; | |
} |