Перетворення CAD креслень на PDF та растрові формати зображень
Aspose.CAD для Java безпосередньо записує інформацію про API та номер версії у вихідні документи. Наприклад, під час рендерингу документа у PDF, Aspose.CAD для Java заповнює поле програми значенням ‘Aspose.CAD’ та поле виробника PDF значенням, наприклад, ‘Aspose.CAD v 17.9’.
Зверніть увагу, що ви не можете вказати Aspose.CAD для Java змінити або видалити цю інформацію з вихідних документів.
Перетворення CAD креслень на растрові формати зображень
Aspose.CAD для Java здатний перетворювати формати креслень CAD, такі як DXF і DWG на підтримувані растрові формати зображень, такі як PNG, BMP, TIFF, JPEG та GIF. API Aspose.CAD для Java має ефективні та прості у використанні засоби для досягнення цієї мети. Ви можете конвертувати будь-який підтримуваний формат креслення CAD у растрові формати зображень, використовуючи прості кроки, описані нижче.
- Завантажте CAD файл у екземпляр Image.
- Створіть екземпляр CadRasterizationOptions та встановіть його обов’язкові властивості, такі як PageWidth та PageHeight.
- Створіть екземпляр ImageOptionsBase та встановіть його VectorRasterizationOptions властивість на екземпляр CadRasterizationOptions, створений на попередньому кроці.
- Викличте 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 рендерить лише макет “Model”. Однак ви також можете вказати макети на свій вибір під час перетворення креслень CAD на формати зображень.
Налаштування перетворення CAD
Процедури перетворення CAD у PDF та CAD у растрові зображення є висококонфігурованими, оскільки клас CadRasterizationOptions реалізований таким чином, що надає багато необов’язкових функцій, які, при налаштуванні, можуть переопределити процес рендерингу відповідно до потреб програми.
Клас CadRasterizationOptions
Клас CadRasterizationOptions є загальним для всіх підтримуваних форматів CAD, таких як DWG та DXF, тому інформація, представлена в цій статті, є дійсною для обох згаданих форматів CAD.
Найбільш корисні властивості класу CadRasterizationOptions:
Властивість | Значення за замовчуванням | Обов’язково | Опис |
---|---|---|---|
PageWidth | 0 | Так | Вказує ширину сторінки. |
PageHeight | 0 | Так | Вказує висоту сторінки. |
ScaleMethod | ScaleType.ShrinkToFit | Ні | Вказує, чи слід автоматично масштабувати креслення. Значення за замовчуванням автоматично зменшує зображення, щоб підходити під розмір полотна. Переключіться в режим GrowToFit або використовуйте настройку None, щоб вимкнути автоматичне масштабування. |
BackgroundColor | Color.White | Ні | Вказує колір фону вихідного зображення. |
DrawType | CadDrawTypeMode.UseDrawColor | Ні | Вказує режим колоризації сутності. Вкажіть опцію UseObjectColor, щоб малювати сутності за їх рідним кольором, або опцію UseDrawColor, щоб перевизначити рідні кольори. |
DrawColor | Color.Black | Ні | Вказує перевизначений колір сутності (тільки якщо DrawType встановлено на значення властивості UseDrawColor). |
AutomaticLayoutsScaling | False | Ні | Вказує, чи слід виконати автоматичне масштабування макетів, щоб відповідати макету моделі. |
Встановлення розміру та режиму полотна
Експорт з CAD у PDF або CAD у растрові формати зображень не є тривіальним завданням. Оскільки отриманий 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 визначає, чи зберігають сутності кольори чи перетворюються на користувацькі кольори. Щоб зберегти кольори сутностей, вкажіть 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 може мати різне масштабування відповідно до розміру макета. Для того, щоб рендеринг був однорідним, API Aspose.CAD надав властивість CadRasterizationOptions.AutomaticLayoutsScaling. Її значення за замовчуванням – false, але коли це значення true, API буде намагатися знайти відповідну шкалу для кожного окремого макета і малювати їх відповідним чином виконуючи автоматичну переоцінку відповідно до розміру сторінки.
Ось як працює властивість CadRasterizationOptions.AutomaticLayoutsScaling в співпраці з властивістю CadRasterizationOptions.ScaleMethod.
- Якщо ScaleMethod встановлено в ScaleType.ShrinkToFit або ScaleType.GrowToFit за умови, що AutomaticLayoutsScaling встановлено на false, всі макети (включаючи модель) будуть оброблені відповідно до першого параметра.
- Якщо ScaleMethod встановлено в ScaleType.ShrinkToFit або ScaleType.GrowToFit за умови, що AutomaticLayoutsScaling встановлено на true, всі макети (окрім моделі) будуть оброблені відповідно до їхнього розміру, тоді як модель буде оброблена відповідно до першого параметра.
- Якщо 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 макетів на растрові формати зображень
API Aspose.CAD для Java здатний перетворювати CAD макети підтримуваних форматів, таких як DXF та DWG, у растрові зображення, такі як PNG, BMP, TIFF, JPEG та GIF. API також надає підтримку для рендерингу конкретних макетів креслення CAD в різні шари PSD. API Aspose.CAD для Java має ефективні та прості у використанні засоби для вказівки списку необхідних макетів CAD і рендерингу їх у растрові формати зображень. Ось як ви можете досягти того ж у 5 простих кроках, описаних нижче.
- Завантажте CAD файл у екземпляр Image, використовуючи фабричний метод load.
- Створіть екземпляр CadRasterizationOptions та встановіть його обов’язкові властивості, такі як PageWidth та PageHeight.
- Вкажіть бажане ім’я(я) макету, використовуючи властивість CadRasterizationOptions.Layouts.
- Створіть екземпляр ImageOptionsBase та встановіть його VectorRasterizationOptions властивість на екземпляр CadRasterizationOptions, створений на попередньому кроці.
- Викличте 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 може виявляти такі можливі проблеми.
- Відсутня або пошкоджена інформація про заголовок.
- Відсутня інформація про макет.
- Відсутні блокові сутності.
- Відсутні стиль вимірювання.
- Відсутні стилі.
Замінювання шрифтів під час перетворення CAD креслень
Цілком ймовірно, що певне CAD креслення використовує специфічний шрифт, який недоступний на машині, де відбувається перетворення CAD у PDF або CAD в растровий формат зображення. У таких ситуаціях API Aspose.CAD викликатиме відповідне виключення, щоб підкреслити відсутні шрифти та зупинити процес конвертації, оскільки API вимагає ці шрифти для правильного рендерингу вмісту у отриманому 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 шарів на растрові формати зображень
API Aspose.CAD для Java надав ефективні та прості у використанні засоби для вказівки імені необхідного CAD шару та рендерингу його у растрові формати зображень. Ось як ви можете досягти цього в 5 простих кроках, описаних нижче.
- Завантажте CAD файл у екземпляр Image, використовуючи фабричний метод load.
- Створіть екземпляр CadRasterizationOptions та встановіть його обов’язкові властивості, такі як PageWidth та PageHeight.
- Додайте бажане ім’я шару, використовуючи метод CadRasterizationOptions.Layers.add.
- Створіть екземпляр ImageOptionsBase та встановіть його VectorRasterizationOptions властивість на екземпляр CadRasterizationOptions, створений на попередньому кроці.
- Викличте метод 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 шарів на растрові формати зображень
API Aspose.CAD для Java надав ефективні та прості у використанні засоби для вказівки імені необхідного CAD шару та рендерингу його у растрові формати зображень. Ось як ви можете досягти цього в 5 простих кроках, описаних нижче.
- Завантажте DWF CAD файл у екземпляр Image, використовуючи фабричний метод Load.
- Створіть екземпляр CadRasterizationOptions та встановіть його обов’язкові властивості, такі як PageWidth та PageHeight.
- Додайте бажане ім’я шару, використовуючи метод CadRasterizationOptions.Layers.Add.
- Створіть екземпляр ImageOptionsBase та встановіть його VectorRasterizationOptions властивість на екземпляр CadRasterizationOptions, створений на попередньому кроці.
- Викличте метод 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); | |