Конвертиране на 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. Aspose.CAD за Java API предоставя ефективни и лесни за използване средства за постигане на тази цел. Можете да конвертирате всеки поддържан формат на 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 рендерира само “Модел” оформление. Въпреки това можете също да укажете оформленията по ваш избор, когато конвертирате 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 контролира дали обектите 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 документа може да има различно мащабиране в зависимост от размера на оформлението. За да направим рендерирането хомогенно, 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 оформления в растерни формати
Aspose.CAD за Java API е способен да конвертира CAD оформления от поддържани формати като DXF и DWG в растерни изображения, като PNG, BMP, TIFF, JPEG и GIF. API-то също така предоставя поддръжка за рендериране на специфични оформления на CAD чертежи в различни PSD слоеве. Aspose.CAD за Java API предоставя ефективни и лесни за използване средства за задаване на списък с необходими 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 или растерни изображения. В такива ситуации, 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 слоеве в растерни формати
Aspose.CAD за Java API предоставя ефективни и лесни за използване средства за задаване на името на необходимия 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 слоеве в растерни формати
Aspose.CAD за Java API предлага ефективни и лесни за използване средства за задаване на името на необходимия 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); | |