Mengonversi Gambar CAD ke Format PDF dan Gambar Raster

Mengonversi Gambar CAD ke Format Gambar Raster

Aspose.CAD untuk Java mampu mengonversi format gambar CAD seperti DXF & DWG ke format gambar raster yang didukung seperti PNG, BMP, TIFF, JPEG & GIF. API Aspose.CAD untuk Java telah menyediakan cara yang efisien & mudah digunakan untuk mencapai tujuan ini. Anda dapat mengonversi format gambar CAD yang didukung ke format gambar raster menggunakan langkah-langkah sederhana sebagai dijelaskan di bawah ini.

  1. Muat file CAD ke dalam sebuah instance dari Image.
  2. Buat instance dari CadRasterizationOptions dan atur properti wajibnya seperti PageWidth & PageHeight.
  3. Buat instance dari ImageOptionsBase dan atur propertinya VectorRasterizationOptions ke instance dari CadRasterizationOptions yang dibuat pada langkah sebelumnya.
  4. Panggil Image.save dengan melewatkan jalur file (atau objek MemoryStream) serta instance dari ImageOptionsBase yang dibuat pada langkah sebelumnya.

Berikut adalah kode sumber lengkapnya.

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

Secara default, API hanya merender layout “Model”. Namun, Anda juga dapat menentukan layout pilihan Anda saat mengonversi gambar CAD ke format gambar.

Kustomisasi Konversi CAD

Prosedur konversi CAD ke PDF & CAD ke konversi gambar raster sangat dapat dikonfigurasi karena kelas CadRasterizationOptions telah diimplementasikan sedemikian rupa sehingga menyediakan banyak fitur opsional yang jika diatur dapat menggantikan proses rendering sesuai kebutuhan aplikasi.

Kelas CadRasterizationOptions

Kelas CadRasterizationOptions umum untuk semua format CAD yang didukung seperti DWG & DXF, oleh karena itu, informasi yang dibagikan dalam artikel ini berlaku untuk kedua format CAD tersebut.

Properti kelas CadRasterizationOptions yang paling berguna adalah:

PropertyNilai DefaultDiperlukanDeskripsi
PageWidth0YaMenentukan lebar halaman.
PageHeight0YaMenentukan tinggi halaman
ScaleMethodScaleType.ShrinkToFitTidakMenentukan apakah gambar harus secara otomatis diskalakan. Nilai default secara otomatis mengecilkan gambar agar sesuai dengan ukuran kanvas. Beralih ke mode GrowToFit, atau gunakan pengaturan None untuk menonaktifkan penskalaan otomatis.
BackgroundColorColor.WhiteTidakMenentukan warna latar belakang gambar keluaran.
DrawTypeCadDrawTypeMode.UseDrawColorTidakMenentukan mode pewarnaan entitas. Tentukan opsi UseObjectColor untuk menggambar entitas menggunakan warna aslinya, atau opsi UseDrawColor untuk mengganti warna asli.
DrawColorColor.BlackTidakMenentukan warna entitas yang diganti (hanya jika DrawType diatur ke nilai properti UseDrawColor).
AutomaticLayoutsScalingSalahTidakMenentukan apakah penskalaan layout otomatis harus dilakukan untuk mencocokkan layout Model.

Menetapkan Ukuran Kanvas & Mode

Ekspor dari CAD ke PDF atau CAD ke format gambar raster bukanlah tugas yang sepele. Karena PDF atau gambar yang dihasilkan memerlukan ukuran kanvas untuk didefinisikan, kita perlu menentukan dimensi keluaran untuk halaman PDF agar gambar dapat dirender dengan benar. Tetapkan properti CadRasterizationOptions.PageWidth dan CadRasterizationOptions.PageHeight secara eksplisit, atau Anda mungkin mendapatkan ImageSaveException.

Selain itu, Anda dapat menentukan opsi skala dimensi. Opsi penskalaan diatur dengan properti CadRasterizationOptions.ScaleMethod. Gunakan opsi ini untuk secara otomatis menyesuaikan dimensi gambar sesuai dengan nilai CadRasterizationOptions.PageWidth dan CadRasterizationOptions.PageHeight. Secara default, CadRasterizationOptions.ScaleMethod diatur ke mode ScaleType.ShrinkToFit. Properti ini mendefinisikan perilaku berikut:

  • Jika dimensi gambar CAD lebih besar dari ukuran kanvas yang dihasilkan, maka dimensi gambar akan dikurangi agar sesuai dengan kanvas yang dihasilkan sambil mempertahankan rasio aspek.
  • Jika dimensi gambar CAD lebih kecil dari ukuran kanvas yang dihasilkan, atur properti CadRasterizationOptions.ScaleMethod ke ScaleType.GrowToFit untuk meningkatkan ukuran gambar agar sesuai dengan kanvas PDF sekaligus mempertahankan rasio aspek.
  • Atau nonaktifkan penskalaan otomatis dengan opsi ScaleType.None.

Contoh kode di bawah ini menunjukkan opsi penskalaan otomatis yang digunakan.

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

Menetapkan Warna Latar Belakang & Gambar

Secara default, palet warna untuk kanvas yang dihasilkan diatur ke skema dokumen umum. Artinya, semua entitas di dalam gambar CAD digambar dengan pena berwarna hitam di latar belakang putih solid. Pengaturan ini dapat diubah dengan properti CadRasterizationOptions.BackgroundColor dan CadRasterizationOptions.DrawColor. Mengubah properti CadRasterizationOptions.DrawColor juga memerlukan pengaturan properti CadRasterizationOptions.DrawType agar dapat menggunakan warna gambar yang akan digunakan. Properti CadRasterizationOptions.DrawType mengontrol apakah entitas CAD mempertahankan warna mereka atau dikonversi ke warna kustom. Untuk mempertahankan warna entitas, tentukan CadRasterizationOptions.DrawType sebagai CadDrawTypeMode.UseObjectColor, jika tidak tentukan nilai CadDrawTypeMode.UseDrawColor.

Contoh kode di bawah ini menunjukkan cara menggunakan berbagai properti warna.

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

Menetapkan Penskalaan Layout Otomatis

Sebagian besar gambar CAD memiliki lebih dari satu layout yang disimpan dalam satu file, dan setiap layout dapat memiliki dimensi yang berbeda. Saat merender gambar CAD semacam itu menjadi PDF, setiap halaman PDF dapat memiliki skala yang berbeda sesuai dengan ukuran layout. Untuk membuat rendering tetap homogen, API Aspose.CAD telah mengekspose properti CadRasterizationOptions.AutomaticLayoutsScaling. Nilai defaultnya adalah false tetapi ketika benar, API akan mencoba mencari skala yang sesuai untuk setiap layout terpisah dan menggambarnya dengan cara yang sesuai dengan melakukan operasi ukuran otomatis sesuai dengan ukuran halaman.

Berikut adalah cara kerja properti CadRasterizationOptions.AutomaticLayoutsScaling dalam kolaborasi dengan properti CadRasterizationOptions.ScaleMethod.

  1. Jika ScaleMethod diatur ke ScaleType.ShrinkToFit atau ScaleType.GrowToFit dengan AutomaticLayoutsScaling yang diatur ke false, maka semua layout (termasuk Model) akan diproses berdasarkan opsi pertama.
  2. Jika ScaleMethod diatur ke ScaleType.ShrinkToFit atau ScaleType.GrowToFit dengan AutomaticLayoutsScaling diatur ke true, maka semua layout (kecuali Model) akan diproses berdasarkan ukuran mereka sedangkan Model akan diproses sesuai dengan opsi pertama.
  3. Jika ScaleMethod diatur ke ScaleType.None dengan AutomaticLayoutsScaling diatur ke true atau false, maka tidak akan ada penskalaan yang dilakukan.

Contoh kode di bawah ini menunjukkan cara menetapkan penskalaan layout otomatis untuk konversi CAD ke 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);

Mengonversi Layout CAD ke Format Gambar Raster

API Aspose.CAD untuk Java mampu mengonversi layout CAD dari format yang didukung seperti DXF & DWG ke gambar raster seperti PNG, BMP, TIFF, JPEG & GIF. API ini juga memberikan dukungan untuk merender layout spesifik dari gambar CAD ke berbagai lapisan PSD.
API Aspose.CAD untuk Java telah menyediakan cara yang efisien & mudah digunakan untuk menentukan daftar layout CAD yang diperlukan dan merendernya ke format gambar raster. Berikut adalah cara Anda dapat mencapainya dalam 5 langkah sederhana sebagai dijelaskan di bawah ini.

  1. Muat file CAD ke dalam sebuah instance dari Image menggunakan metode pabrik load.
  2. Buat instance dari CadRasterizationOptions dan atur properti wajibnya seperti PageWidth & PageHeight.
  3. Tentukan nama layout yang diinginkan menggunakan properti CadRasterizationOptions.Layouts.
  4. Buat instance dari ImageOptionsBase dan atur propertinya VectorRasterizationOptions ke instance dari CadRasterizationOptions yang dibuat pada langkah sebelumnya.
  5. Panggil metode Image.Save dengan melewatkan jalur file (atau objek MemoryStream) serta instance dari ImageOptionsBase yang dibuat pada langkah sebelumnya.

Berikut adalah kode sumber lengkapnya.

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

 

Mengaktifkan Pelacakan untuk Proses Rendering CAD

Aspose.CAD telah memperkenalkan serangkaian kelas dan bidang enumerasi pendukung untuk membantu pelacakan proses rendering CAD. Dengan perubahan ini, konversi CAD ke PDF sekarang dapat dicapai seperti berikut sambil mengaktifkan pelacakan.

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

Pelacakan proses rendering CAD dapat mendeteksi masalah yang mungkin terjadi berikut ini.

  1. Informasi header yang hilang atau rusak.
  2. Informasi layout yang hilang.
  3. Entitas blok yang hilang.
  4. Gaya dimensi yang hilang.
  5. Gaya yang hilang.

Mengganti Font saat Mengonversi Gambar CAD

Kemungkinan suatu gambar CAD menggunakan font tertentu yang tidak tersedia di mesin tempat konversi CAD ke PDF atau CAD ke gambar raster dilakukan. Dalam situasi seperti itu, API Aspose.CAD akan memicu pengecualian yang sesuai untuk menyoroti font (font) yang hilang dan menghentikan proses konversi karena API memerlukan font ini untuk merender konten dengan benar ke PDF dan/atau gambar yang dihasilkan. API Aspose.CAD menyediakan cara yang mudah untuk menggunakan mekanisme untuk mengganti font (font) yang diperlukan dengan font (font) yang tersedia. Properti CadImage.Styles mengembalikan instance dari CadStylesDictionary yang pada gilirannya berisi CadStyleTableObject untuk setiap gaya dalam gambar CAD, sedangkan CadStyleTableObject.PrimaryFontName dapat digunakan untuk menentukan nama font yang tersedia.

Snippet kode berikut menunjukkan penggunaan API Aspose.CAD untuk Java untuk mengubah font dari semua gaya dalam gambar 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");
}

Juga mungkin untuk mengubah font dari hanya satu gaya tertentu dengan mengaksesnya melalui nama gaya. Snippet kode berikut menunjukkan penggunaan pendekatan ini.

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

Mengonversi Layer CAD ke Format Gambar Raster

API Aspose.CAD untuk Java telah menyediakan cara yang efisien & mudah digunakan untuk menentukan nama layer CAD yang diperlukan dan merendernya ke format gambar raster. Berikut adalah cara Anda dapat mencapainya dalam 5 langkah sederhana seperti yang dijelaskan di bawah ini.

  1. Muat file CAD ke dalam sebuah instance dari Image menggunakan metode pabrik load.
  2. Buat instance dari CadRasterizationOptions dan atur properti wajibnya seperti PageWidth & PageHeight.
  3. Tambahkan nama layer yang diinginkan menggunakan metode CadRasterizationOptions.Layers.add.
  4. Buat instance dari ImageOptionsBase dan atur propertinya VectorRasterizationOptions ke instance dari CadRasterizationOptions yang dibuat pada langkah sebelumnya.
  5. Panggil metode Image.save dengan melewatkan jalur file (atau objek MemoryStream) serta instance dari ImageOptionsBase yang dibuat pada langkah sebelumnya.

Berikut adalah kode sumber lengkapnya.

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

Mengonversi Semua Layer CAD ke Gambar Terpisah

Anda dapat mendapatkan semua layer dari gambar CAD menggunakan CadImage.Layers dan merender setiap layer ke gambar terpisah seperti yang ditunjukkan di bawah ini.

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

Mengonversi Layer CAD DWF ke Format Gambar Raster

API Aspose.CAD untuk Java telah menyediakan cara yang efisien & mudah digunakan untuk menentukan nama layer CAD yang diperlukan dan merendernya ke format gambar raster. Berikut adalah cara Anda dapat mencapainya dalam 5 langkah sederhana seperti yang dijelaskan di bawah ini.

  1. Muat file CAD DWF ke dalam sebuah instance dari Image menggunakan metode pabrik Load.
  2. Buat instance dari CadRasterizationOptions dan atur properti wajibnya seperti PageWidth & PageHeight.
  3. Tambahkan nama layer yang diinginkan menggunakan metode CadRasterizationOptions.Layers.Add.
  4. Buat instance dari ImageOptionsBase dan atur propertinya VectorRasterizationOptions ke instance dari CadRasterizationOptions yang dibuat pada langkah sebelumnya.
  5. Panggil metode Image.Save dengan melewatkan jalur file (atau objek MemoryStream) serta instance dari ImageOptionsBase yang dibuat pada langkah sebelumnya.

Berikut adalah kode sumber lengkapnya.

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