การแปลงภาพ CAD เป็นไฟล์ PDF และรูปแบบภาพ Raster

การแปลงภาพ CAD เป็นรูปแบบภาพ Raster

Aspose.CAD สำหรับ Java สามารถแปลงรูปแบบไฟล์ CAD เช่น DXF & DWG เป็นรูปแบบภาพ Raster ที่รองรับ เช่น PNG, BMP, TIFF, JPEG & GIF. API ของ Aspose.CAD สำหรับ Java ได้เปิดเผยวิธีการที่มีประสิทธิภาพและใช้งานง่ายเพื่อบรรลุเป้าหมายนี้ คุณสามารถแปลงรูปแบบภาพ CAD ที่รองรับใด ๆ เป็นรูปแบบภาพ Raster โดยใช้ขั้นตอนที่ง่ายด้านล่างนี้

  1. โหลดไฟล์ CAD เข้าไปในอินสแตนซ์ของ Image.
  2. สร้างอินสแตนซ์ของ CadRasterizationOptions และตั้งค่าคุณสมบัติที่จำเป็น เช่น PageWidth & PageHeight.
  3. สร้างอินสแตนซ์ของ ImageOptionsBase และตั้งค่าคุณสมบัติ VectorRasterizationOptions เป็นอินสแตนซ์ของ CadRasterizationOptions ที่สร้างขึ้นในขั้นตอนก่อนหน้า.
  4. เรียกใช้ Image.save โดยการส่งผ่านที่อยู่ไฟล์ (หรือวัตถุของ MemoryStream) รวมถึงอินสแตนซ์ของ ImageOptionsBase ที่สร้างขึ้นในขั้นตอนก่อนหน้า.

นี่คือโค้ดต้นฉบับอย่างครบถ้วน

String srcFile = dataDir + "conic_pyramid.dxf";
Image image = Image.load(srcFile);
// Create an instance of CadRasterizationOptions
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
// Set page width & height
rasterizationOptions.setPageWidth(1200);
rasterizationOptions.setPageHeight(1200);
// Create an instance of PngOptions for the resultant image
ImageOptionsBase options = new PngOptions();
//Set rasterization options
options.setVectorRasterizationOptions(rasterizationOptions);
// Save resultant image
image.save(dataDir + "conic_pyramid_raster_image_out_.png", options);

โดยทั่วไป API จะเรนเดอร์เฉพาะเลย์เอาต์ “โมเดล” เท่านั้น อย่างไรก็ตาม คุณยังสามารถระบุเลย์เอาต์ตามที่คุณต้องการในขณะที่แปลงภาพ CAD เป็นรูปแบบภาพ

การปรับแต่งการแปลง CAD

กระบวนการแปลง CAD เป็น PDF และจาก CAD เป็นภาพ Raster สามารถกำหนดค่าได้อย่างมาก เนื่องจากคลาส CadRasterizationOptions ถูกพัฒนาในลักษณะที่สามารถให้ฟีเจอร์เสริมที่หลากหลายซึ่งเมื่อกำหนดแล้วจะสามารถทำการเรนเดอร์ได้ตามความต้องการของแอปพลิเคชัน

คลาส CadRasterizationOptions

คลาส CadRasterizationOptions เป็นร่วมกันสำหรับรูปแบบ CAD ที่รองรับทั้งหมด เช่น DWG & DXF ดังนั้นข้อมูลที่แบ่งปันในบทความนี้จึงใช้ได้กับรูปแบบ CAD ที่กล่าวถึงทั้งสอง

คุณสมบัติที่มีประโยชน์ที่สุดของคลาส CadRasterizationOptions คือ:

คุณสมบัติค่าเริ่มต้นต้องการคำอธิบาย
PageWidth0ใช่ระบุความกว้างของหน้า
PageHeight0ใช่ระบุความสูงของหน้า
ScaleMethodScaleType.ShrinkToFitไม่ระบุว่าสิ่งวาดควรถูกรับการปรับขนาดโดยอัตโนมัติ ค่าเริ่มต้นจะย่อภาพให้พอดีกับขนาดของผ้าใบ สลับไปที่โหมด GrowToFit หรือใช้การตั้งค่า None เพื่อปิดการปรับขนาดอัตโนมัติ
BackgroundColorColor.Whiteไม่ระบุสีพื้นหลังของภาพที่เอาต์พุต
DrawTypeCadDrawTypeMode.UseDrawColorไม่ระบุโหมดการปรับสีของวัตถุ กำหนดตัวเลือก UseObjectColor เพื่อวาดวัตถุโดยใช้สีดั้งเดิมของพวกเขา หรือใช้ตัวเลือก UseDrawColor เพื่อแทนที่สีดั้งเดิม
DrawColorColor.Blackไม่ระบุสีของเอนทิตีที่ถูกแทนที่ (เฉพาะเมื่อ DrawType ถูกตั้งค่าเป็นค่าของคุณสมบัติ UseDrawColor)
AutomaticLayoutsScalingFalseไม่ระบุว่าต้องทำการปรับขนาดเลย์เอาต์อัตโนมัติให้ตรงกับเลย์เอาต์โมเดลหรือไม่

การตั้งค่าขนาดผ้าใบและโหมด

การส่งออกจาก CAD ไปยัง PDF หรือ CAD ไปยังรูปภาพ Raster ไม่ใช่งานที่ง่าย เพราะว่าภาพ PDF หรือภาพผลลัพธ์ต้องการให้กำหนดขนาดของผ้าใบ โดยเราต้องระบุขนาดของ PDF หน้าเพื่อจะทำการเรนเดอร์ภาพให้ถูกต้อง กำหนดคุณสมบัติ CadRasterizationOptions.PageWidth และ CadRasterizationOptions.PageHeight อย่างชัดแจ้ง หรืออาจจะเกิด ImageSaveException ได้

นอกจากนี้ คุณยังสามารถกำหนดตัวเลือกขนาดการปรับขนาดได้ ตัวเลือกการปรับขนาดจะถูกตั้งค่าผ่านคุณสมบัติ CadRasterizationOptions.ScaleMethod ใช้ตัวเลือกนี้เพื่อปรับขนาดภาพให้ตรงตามค่าของ CadRasterizationOptions.PageWidth และ CadRasterizationOptions.PageHeight โดยค่าเริ่มต้น CadRasterizationOptions.ScaleMethod จะถูกตั้งค่าเป็นโหมด ScaleType.ShrinkToFit คุณสมบัตินี้จะกำหนดพฤติกรรมต่อไปนี้:

  • หากขนาดของภาพ CAD ใหญ่กว่าขนาดผ้าใบที่ได้ ผลขนาดของภาพจะถูกลดลงให้พอดีกับผ้าใบ โดยยังคงรักษาสัดส่วน
  • หากขนาดของ CAD ให้น้อยกว่าขนาดผ้าใบจะตั้งค่าคุณสมบัติ CadRasterizationOptions.ScaleMethod เป็น ScaleType.GrowToFit เพื่อเพิ่มขนาดการวาดให้พอดีกับผ้าใบ PDF โดยยังคงรักษาสัดส่วน
  • หรือปิดการปรับขนาดอัตโนมัติด้วยตัวเลือก ScaleType.None

ตัวอย่างโค้ดด้านล่างแสดงตัวเลือกการปรับขนาดอัตโนมัติในใช้งาน

String srcFile = dataDir + "conic_pyramid.dxf";
com.aspose.cad.Image objImage = com.aspose.cad.Image.load(srcFile);
// Create an instance of CadRasterizationOptions and set its various properties
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
rasterizationOptions.setPageWidth(1600);
rasterizationOptions.setPageHeight(1600);
rasterizationOptions.setAutomaticLayoutsScaling(true);
rasterizationOptions.setNoScaling(true);
// Create an instance of PdfOptions
PdfOptions pdfOptions = new PdfOptions();
// Set the VectorRasterizationOptions property
pdfOptions.setVectorRasterizationOptions(rasterizationOptions);
// Export CAD to PDF
objImage.save(dataDir +"result_out_.pdf", pdfOptions);
// Create an instance of TiffOptions
TiffOptions tiffOptions = new TiffOptions(TiffExpectedFormat.Default);
// Set the VectorRasterizationOptions property
tiffOptions.setVectorRasterizationOptions(rasterizationOptions);
// Export CAD to TIFF
objImage.save(dataDir + "result_out_.tiff", tiffOptions);

การตั้งค่าสีพื้นหลังและสีภาพวาด

โดยทั่วไป แปลงสีสำหรับผ้าใบที่เกิดขึ้นได้ถูกตั้งค่าเป็นแบบสาธารณะของเอกสาร นั่นหมายความว่าทุกเอนทิตีภายในการวาด CAD จะถูกวาดด้วยปากกาสีดำบนพื้นหลังสีขาว ตัวตั้งค่าพวกนี้สามารถเปลี่ยนแปลงได้ด้วยคุณสมบัติ CadRasterizationOptions.BackgroundColor และ CadRasterizationOptions.DrawColor การเปลี่ยนแปลงคุณสมบัติ CadRasterizationOptions.DrawColor จะต้องติดตั้งคุณสมบัติ CadRasterizationOptions.DrawType เพื่อใช้สีการวาดที่กำหนด คุณสมบัติ CadRasterizationOptions.DrawType จะควบคุมว่าธาตุ CAD จะรักษาสีเดิมหรือแปลงเป็นสีที่กำหนดเอง หากต้องการรักษาสีของเอนทิตี ให้กำหนดให้ CadRasterizationOptions.DrawType เป็น CadDrawTypeMode.UseObjectColor มิฉะนั้นให้ระบุค่า CadDrawTypeMode.UseDrawColor

ตัวอย่างโค้ดด้านล่างแสดงวิธีการใช้คุณสมบัติสีที่แตกต่างกัน

String srcFile = dataDir + "conic_pyramid.dxf";
// Image image = Image.load(srcFile);
com.aspose.cad.Image objImage = com.aspose.cad.Image.load(srcFile);
// Create an instance of CadRasterizationOptions and set its various properties
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
rasterizationOptions.setPageWidth(1600);
rasterizationOptions.setPageHeight(1600);
rasterizationOptions.setBackgroundColor(com.aspose.cad.Color.getBeige());
rasterizationOptions.setDrawType(CadDrawTypeMode.UseDrawColor);
rasterizationOptions.setBackgroundColor(com.aspose.cad.Color.getBlue());
// Create an instance of PdfOptions
PdfOptions pdfOptions = new PdfOptions();
// Set the VectorRasterizationOptions property
pdfOptions.setVectorRasterizationOptions(rasterizationOptions);
// Export CAD to PDF
objImage.save(dataDir +"result_out_.pdf", pdfOptions);
// Create an instance of TiffOptions
TiffOptions tiffOptions = new TiffOptions(TiffExpectedFormat.Default);
// Set the VectorRasterizationOptions property
tiffOptions.setVectorRasterizationOptions(rasterizationOptions);
// Export CAD to TIFF
objImage.save(dataDir + "result_out_.tiff", tiffOptions);

การตั้งการปรับขนาดอัตโนมัติของเลย์เอาต์

ภาพ CAD ส่วนมากมีเลย์เอาต์มากกว่าหนึ่งรายการที่ถูกจัดเก็บในไฟล์เดียว และเลย์เอาต์แต่ละรายการอาจมีขนาดที่แตกต่างกัน ในการเรนเดอร์ภาพ CAD เหล่านั้นเป็น PDF หน้าของ PDF แต่ละหน้าก็อาจมีการปรับขนาดที่แตกต่างกันตามขนาดของเลย์เอาท์ เพื่อให้การเรนเดอร์มีความเป็นกลุ่มมากขึ้น APIs ของ Aspose.CAD ได้เปิดเผยคุณสมบัติ CadRasterizationOptions.AutomaticLayoutsScaling ค่าดีฟอลต์จะถูกตั้งค่าเป็น false แต่เมื่อเป็น true API จะพยายามค้นหาสัดส่วนที่สอดคล้องกันสำหรับแต่ละเลย์เอาต์แยกและวาดมันในลักษณะที่ตรงด้วยการดำเนินการปรับขนาดอัตโนมัติตามขนาดหน้า

นี่คือวิธีการที่คุณสมบัติ CadRasterizationOptions.AutomaticLayoutsScaling ทำงานร่วมกับคุณสมบัติ CadRasterizationOptions.ScaleMethod

  1. หาก ScaleMethod ถูกตั้งเป็น ScaleType.ShrinkToFit หรือ ScaleType.GrowToFit โดยที่ AutomaticLayoutsScaling ถูกตั้งเป็น false เลย์เอาต์ทั้งหมด (รวมถึงโมเดล) จะถูกประมวลผลตามตัวเลือกแรก
  2. หาก ScaleMethod ถูกตั้งเป็น ScaleType.ShrinkToFit หรือ ScaleType.GrowToFit โดยที่ AutomaticLayoutsScaling ถูกตั้งเป็น true เลย์เอาต์ทั้งหมด (ยกเว้นโมเดล) จะถูกประมวลผลตามขนาดของพวกเขา ในขณะที่โมเดลจะถูกประมวลผลตามตัวเลือกแรก
  3. หาก ScaleMethod ถูกตั้งเป็น ScaleType.None โดยที่ AutomaticLayoutsScaling ถูกตั้งเป็น true หรือ false จะไม่มีการปรับขนาด

ตัวอย่างโค้ดด้านล่างแสดงวิธีการตั้งการปรับขนาดอัตโนมัติสำหรับการแปลง CAD ไปเป็น PDF

String srcFile = dataDir + "conic_pyramid.dxf";
Image image = Image.load(srcFile);
// Create an instance of CadRasterizationOptions and set its various properties
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
rasterizationOptions.setPageWidth(1600);
rasterizationOptions.setPageHeight(1600);
// Set Auto Layout Scaling
rasterizationOptions.setAutomaticLayoutsScaling(true);
// Create an instance of PdfOptions
PdfOptions pdfOptions = new PdfOptions();
// Set the VectorRasterizationOptions property
pdfOptions.setVectorRasterizationOptions(rasterizationOptions);
// Export the CAD to PDF
image.save(dataDir + "result_out_.pdf", pdfOptions);

การแปลงเลย์เอาต์ CAD เป็นรูปแบบภาพ Raster

Aspose.CAD สำหรับ Java API สามารถเปลี่ยนเลย์เอาต์ CAD ในรูปแบบที่รองรับ เช่น DXF & DWG เป็นภาพ Raster เช่น PNG, BMP, TIFF, JPEG & GIF API ยังให้การสนับสนุนเพื่อเรนเดอร์เลย์เอาต์เฉพาะของการวาด CAD ลงในเลเยอร์ PSD ต่างๆ Aspose.CAD สำหรับ Java API ได้เปิดเผยวิธีที่มีประสิทธิภาพและใช้งานง่ายเพื่อกำหนดรายการเลย์เอาต์ CAD ที่ต้องการและเรนเดอร์ให้เป็นรูปแบบภาพ Raster นี่คือวิธีที่คุณสามารถทำได้ใน 5 ขั้นตอนง่ายๆ ดังที่แสดงด้านล่างนี้

  1. โหลดไฟล์ CAD ลงในอินสแตนซ์ของ Image โดยใช้วิธีการโรงงาน load.
  2. สร้างอินสแตนซ์ของ CadRasterizationOptions และตั้งค่าคุณสมบัติที่จำเป็น เช่น PageWidth & PageHeight.
  3. ระบุชื่อเลย์เอาต์ที่ต้องการโดยใช้คุณสมบัติ CadRasterizationOptions.Layouts.
  4. สร้างอินสแตนซ์ของ ImageOptionsBase และตั้งค่าคุณสมบัติ VectorRasterizationOptions เป็นอินสแตนซ์ของ CadRasterizationOptions ที่สร้างขึ้นในขั้นตอนก่อนหน้า.
  5. เรียกใช้ Image.Save โดยการส่งผ่านที่อยู่ไฟล์ (หรือวัตถุของ MemoryStream) รวมถึงอินสแตนซ์ของ ImageOptionsBase ที่สร้างขึ้นในขั้นตอนก่อนหน้า.

นี่คือโค้ดต้นฉบับอย่างครบถ้วน

String srcFile = dataDir + "conic_pyramid.dxf";
Image image = Image.load(srcFile);
// Create an instance of CadRasterizationOptions
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
// Set page width & height
rasterizationOptions.setPageWidth(1200);
rasterizationOptions.setPageHeight(1200);
// Specify a list of layout names
rasterizationOptions.setLayouts(new String[] {"Model", "Layout1"});
// Create an instance of TiffOptions for the resultant image
ImageOptionsBase options = new TiffOptions(TiffExpectedFormat.Default);
// Set rasterization options
options.setVectorRasterizationOptions(rasterizationOptions);
// Save resultant image
image.save(dataDir + "conic_pyramid_layoutstorasterimage_out_.tiff", options);

 

การเปิดใช้งานการติดตามกระบวนการเรนเดอร์ CAD

Aspose.CAD ได้แนะนำชุดของคลาสและฟิลด์การประกาศที่สนับสนุนเพื่อช่วยในการติดตามกระบวนการเรนเดอร์ CAD ด้วยการเปลี่ยนแปลงเหล่านี้ การแปลง CAD เป็น PDF สามารถทำได้ตามที่ตามนี้ โดยการเปิดใช้งานการติดตาม

// For complete examples and data files, please go to https://github.com/aspose-cad/Aspose.CAD-for-Java
// The path to the resource directory.
String dataDir = Utils.getDataDir(EnableTracking.class) + "DXFDrawings/";
Image image = Image.load(dataDir + "conic_pyramid.dxf");
{
OutputStream stream = new FileOutputStream(dataDir + "output_conic_pyramid.pdf");
{
PdfOptions pdfOptions = new PdfOptions();
CadRasterizationOptions cadRasterizationOptions = new CadRasterizationOptions();
pdfOptions.setVectorRasterizationOptions(cadRasterizationOptions);
cadRasterizationOptions.setPageWidth(800);
cadRasterizationOptions.setPageHeight(600);
cadRasterizationOptions.RenderResult = new ErrorHandler();
System.out.println("Exporting to pdf format");
image.save(stream, pdfOptions);
}
}
// For complete examples and data files, please go to https://github.com/aspose-cad/Aspose.CAD-for-Java
public static class ErrorHandler extends CadRasterizationOptions.CadRenderHandler
{
@Override
public void invoke(CadRenderResult result) {
System.out.println("Tracking results of exporting");
if (result.isRenderComplete())
return;
System.out.println("Have some problems:");
int idxError = 1;
for (RenderResult rr : result.getFailures())
{
System.out.printf("{0}. {1}, {2}", idxError, rr.getRenderCode(), rr.getMessage());
idxError++;
}
}
}

การติดตามกระบวนการเรนเดอร์ CAD สามารถตรวจจับปัญหาที่อาจเกิดขึ้นดังต่อไปนี้

  1. ข้อมูลหัวข้อที่ขาดหายหรือเสียหาย
  2. ข้อมูลเลย์เอาต์ที่ขาดหาย
  3. เอนทิตีบล็อคที่ขาดหาย
  4. รูปแบบมิติที่ขาดหาย
  5. รูปแบบที่ขาดหาย

การแทนที่ฟอนต์เมื่อแปลงภาพ CAD

อาจเป็นไปได้ว่าภาพ CAD บางอย่างใช้ฟอนต์เฉพาะที่ไม่มีอยู่ในเครื่องที่ทำการแปลง CAD เป็น PDF หรือ CAD เป็นรูปภาพ Raster ในสถานการณ์เช่นนั้น API ของ Aspose.CAD จะเรียกใช้งานข้อยกเว้นที่เหมาะสมเพื่อเน้นการขาดฟอนต์และหยุดกระบวนการแปลงเพราะว่ารายการฟอนต์เหล่านี้จำเป็นต้องให้ได้เพื่อเรนเดอร์เนื้อหาให้ถูกต้องบน PDF และ/หรือภาพที่เกิดขึ้น API ของ Aspose.CAD ให้วิธีการที่ง่ายในการใช้กลไกในการแทนที่ฟอนต์ที่จำเป็นด้วยฟอนต์ที่มีอยู่ โดยใช้คุณสมบัติ CadImage.Styles ที่จะส่งคืนอินสแตนซ์ของ CadStylesDictionary ซึ่งในทางกลับกันจะเก็บ CadStyleTableObject สำหรับแต่ละสไตล์ในภาพ CAD ในขณะที่ CadStyleTableObject.PrimaryFontName สามารถใช้เพื่อระบุชื่อฟอนต์ที่มีอยู่

ตัวอย่างโค้ดด้านล่างแสดงถึงการใช้งานของ Aspose.CAD สำหรับ Java API เพื่อเปลี่ยนฟอนต์ของทุกสไตล์ในภาพ CAD

String srcFile = dataDir + "conic_pyramid.dxf";
// Load a CAD drawing in an instance of CadImage
CadImage cadImage = (CadImage) Image.load(srcFile);
// Iterate over the items of CadStylesDictionary
for(Object style : cadImage.getStyles())
{
// Set the font name
((com.aspose.cad.fileformats.cad.cadtables.CadStyleTableObject)style).setPrimaryFontName("Arial");
}

นอกจากนี้ยังเป็นไปได้ที่จะเปลี่ยนฟอนต์ของสไตล์เฉพาะโดยการเข้าถึงมันผ่านชื่อสไตล์ ตัวอย่างโค้ดด้านล่างแสดงการใช้งานของแนวทางนี้

String srcFile = dataDir + "conic_pyramid.dxf";
// Load a CAD drawing in an instance of CadImage
CadImage cadImage = (CadImage)Image.load(srcFile);
// Specify the font for one particular style
((com.aspose.cad.fileformats.cad.cadtables.CadStyleTableObject)cadImage.getStyles().get_Item(0)).setPrimaryFontName("Arial");

การแปลงเลเยอร์ CAD เป็นรูปแบบภาพ Raster

Aspose.CAD สำหรับ Java API ได้เปิดเผยวิธีที่มีประสิทธิภาพและใช้งานง่ายในการระบุชื่อของเลเยอร์ CAD ที่จำเป็นและเรนเดอร์มันเป็นรูปแบบภาพ Raster นี่คือวิธีที่คุณสามารถทำได้ใน 5 ขั้นตอนง่าย ๆ ดังที่แสดงด้านล่างนี้

  1. โหลดไฟล์ CAD ลงในอินสแตนซ์ของ Image โดยใช้วิธีการโรงงาน load.
  2. สร้างอินสแตนซ์ของ CadRasterizationOptions และตั้งค่าคุณสมบัติที่จำเป็น เช่น PageWidth & PageHeight.
  3. เพิ่มชื่อเลเยอร์ที่ต้องการโดยใช้วิธีการ CadRasterizationOptions.Layers.add.
  4. สร้างอินสแตนซ์ของ ImageOptionsBase และตั้งค่าคุณสมบัติ VectorRasterizationOptions เป็นอินสแตนซ์ของ CadRasterizationOptions ที่สร้างขึ้นในขั้นตอนก่อนหน้า.
  5. เรียกใช้เมธอด Image.save โดยการส่งผ่านที่อยู่ไฟล์ (หรือวัตถุของ MemoryStream) รวมถึงอินสแตนซ์ของ ImageOptionsBase ที่สร้างขึ้นในขั้นตอนก่อนหน้า.

นี่คือโค้ดต้นฉบับอย่างครบถ้วน

// The path to the resource directory.
String dataDir = Utils.getDataDir(ConvertCADLayerToRasterImageFormat.class) + "CADConversion/";
String srcFile = dataDir + "conic_pyramid.dxf";
// Load a CAD drawing in an instance of Image
Image image = Image.load(srcFile);
// Create an instance of CadRasterizationOptions
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
// Set image width & height
rasterizationOptions.setPageWidth(500);
rasterizationOptions.setPageHeight(500);
List<String> stringList = new ArrayList<>(Arrays.asList("0"));
// Add the layer name to the CadRasterizationOptions's layer list
rasterizationOptions.setLayers(stringList);
// Create an instance of JpegOptions (or any ImageOptions for raster formats)
JpegOptions options = new JpegOptions();
// Set VectorRasterizationOptions property to the instance of CadRasterizationOptions
options.setVectorRasterizationOptions(rasterizationOptions);
// Export each layer to JPEG format
image.save(dataDir + "CADLayersToRasterImageFormats_out_.jpg", options);

การแปลงเลเยอร์ CAD ทั้งหมดเป็นภาพแยกต่างหาก

คุณสามารถรับเลเยอร์ทั้งหมดจากการวาด CAD โดยใช้ CadImage.Layers และเรนเดอร์แต่ละเลเยอร์เป็นภาพแยกที่แสดงด้านล่าง

String srcFile = dataDir + "conic_pyramid.dxf";
// Load a CAD drawing in an instance of CadImage
CadImage image = (CadImage) Image.load(srcFile);
// Create an instance of CadRasterizationOptions
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
// Set image width & height
rasterizationOptions.setPageWidth(500);
rasterizationOptions.setPageHeight(500);
// Get the layers in an instance of CadLayersDictionary.
// Iterate over the layers
for (String layer : image.getLayers().getLayersNames())
{
// Display layer name for tracking
System.out.println("Start with " +layer);
List<String> stringList = Arrays.asList(layer);
// Add the layer name to the CadRasterizationOptions's layer list
rasterizationOptions.setLayers(stringList);
// Create an instance of JpegOptions (or any ImageOptions for raster formats)
JpegOptions options = new JpegOptions();
// Set VectorRasterizationOptions property to the instance of CadRasterizationOptions
options.setVectorRasterizationOptions(rasterizationOptions);
// Export each layer to JPEG format
image.save(dataDir + layer + "_out_.jpg", options);
}

การแปลงเลเยอร์ DWF CAD เป็นรูปแบบภาพ Raster

Aspose.CAD สำหรับ Java API ได้เปิดเผยวิธีที่มีประสิทธิภาพและใช้งานง่ายในการระบุชื่อของเลเยอร์ CAD ที่จำเป็นและเรนเดอร์มันเป็นรูปแบบภาพ Raster นี่คือวิธีที่คุณสามารถทำได้ใน 5 ขั้นตอนง่าย ๆ ดังที่แสดงด้านล่างนี้

  1. โหลดไฟล์ DWF CAD ลงในอินสแตนซ์ของ Image โดยใช้วิธีการโรงงาน Load.
  2. สร้างอินสแตนซ์ของ CadRasterizationOptions และตั้งค่าคุณสมบัติที่จำเป็น เช่น PageWidth & PageHeight.
  3. เพิ่มชื่อเลเยอร์ที่ต้องการโดยใช้วิธีการ CadRasterizationOptions.Layers.Add.
  4. สร้างอินสแตนซ์ของ ImageOptionsBase และตั้งค่าคุณสมบัติ VectorRasterizationOptions เป็นอินสแตนซ์ของ CadRasterizationOptions ที่สร้างขึ้นในขั้นตอนก่อนหน้า.
  5. เรียกใช้เมธอด Image.Save โดยการส่งผ่านที่อยู่ไฟล์ (หรือวัตถุของ MemoryStream) รวมถึงอินสแตนซ์ของ ImageOptionsBase ที่สร้างขึ้นในขั้นตอนก่อนหน้า.

นี่คือโค้ดต้นฉบับอย่างครบถ้วน

String fileName = (dataDir + "site.dwf");
com.aspose.cad.Image image = com.aspose.cad.Image.load(fileName);
BmpOptions bmpOptions = new BmpOptions();
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
bmpOptions.setVectorRasterizationOptions(rasterizationOptions);
rasterizationOptions.setPageHeight(500);
rasterizationOptions.setPageWidth(500);
rasterizationOptions.setLayouts(new String[] { "Model" });
// export
String outPath = dataDir +"site.bmp";
image.save(outPath, bmpOptions);