Konwersja rysunków CAD do formatów PDF i obrazów rastrowych
Aspose.CAD dla Javy bezpośrednio zapisuje informacje o API i numerze wersji w dokumentach wyjściowych. Na przykład, po renderowaniu dokumentu do PDF, Aspose.CAD dla Javy wypełnia pole aplikacji wartością ‘Aspose.CAD’ oraz pole producenta PDF wartością, np. ‘Aspose.CAD v 17.9’.
Proszę zauważyć, że nie można polecić Aspose.CAD dla Javy zmiany lub usunięcia tych informacji z dokumentów wyjściowych.
Konwersja rysunków CAD do formatów obrazów rastrowych
Aspose.CAD dla Javy jest w stanie konwertować formaty rysunków CAD, takie jak DXF i DWG do obsługiwanych formatów obrazów rastrowych, takich jak PNG, BMP, TIFF, JPEG i GIF. API Aspose.CAD dla Javy oferuje wydajne i łatwe w użyciu środki do osiągnięcia tego celu. Można konwertować dowolny obsługiwany format rysunku CAD do formatów obrazów rastrowych, używając prostych kroków, jak opisano poniżej.
- Załaduj plik CAD do instancji Image.
- Utwórz instancję CadRasterizationOptions i ustaw jej obowiązkowe właściwości, takie jak PageWidth i PageHeight.
- Utwórz instancję ImageOptionsBase i ustaw jej właściwość VectorRasterizationOptions na instancję CadRasterizationOptions utworzoną w poprzednim kroku.
- Wywołaj Image.save, przekazując ścieżkę pliku (lub obiekt MemoryStream) oraz instancję ImageOptionsBase utworzoną w poprzednim kroku.
Oto kompletny kod źródłowy.
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); |
Domyślnie API renderuje tylko układ “Model”. Możesz jednak również określić układy, które wybierzesz podczas konwersji rysunków CAD do formatów obrazów.
Dostosowywanie konwersji CAD
Procedury konwersji CAD do PDF i konwersji CAD do obrazów rastrowych są wysoce konfigurowalne, ponieważ klasa CadRasterizationOptions została zaimplementowana w taki sposób, że oferuje wiele opcjonalnych funkcji, które po ustawieniu mogą nadpisywać proces renderowania zgodnie z potrzebami aplikacji.
Klasa CadRasterizationOptions
Klasa CadRasterizationOptions jest wspólna dla wszystkich obsługiwanych formatów CAD, takich jak DWG i DXF, dlatego informacje zawarte w tym artykule są ważne dla obu wymienionych formatów CAD.
Najbardziej przydatne właściwości klasy CadRasterizationOptions to:
Właściwość | Wartość domyślna | Wymagana | Opis |
---|---|---|---|
PageWidth | 0 | Tak | Określa szerokość strony. |
PageHeight | 0 | Tak | Określa wysokość strony |
ScaleMethod | ScaleType.ShrinkToFit | Nie | Określa, czy rysunek powinien być automatycznie skalowany. Wartość domyślna automatycznie zmniejsza obraz, aby dopasować rozmiar płótna. Przełącz na tryb GrowToFit lub użyj ustawienia None, aby wyłączyć automatyczne skalowanie. |
BackgroundColor | Color.White | Nie | Określa kolor tła obrazu wyjściowego. |
DrawType | CadDrawTypeMode.UseDrawColor | Nie | Określa sposób kolorowania encji. Wybierz opcję UseObjectColor, aby rysować encje przy użyciu ich native’owego koloru, lub opcję UseDrawColor, aby nadpisać kolory native’owe. |
DrawColor | Color.Black | Nie | Określa nadpisany kolor encji (tylko jeśli DrawType jest ustawione na wartość właściwości UseDrawColor). |
AutomaticLayoutsScaling | Fałsz | Nie | Określa, czy należy wykonać automatyczne skalowanie układu, aby dopasować go do układu Model. |
Ustawianie rozmiaru i trybu płótna
Eksport z CAD do PDF lub z CAD do formatów obrazów rastrowych nie jest trywialnym zadaniem. Ponieważ powstały PDF lub obraz wymaga zdefiniowania rozmiaru płótna, musimy określić wymiary wyjściowe dla strony PDF, aby poprawnie wyświetlić rysunek. Ustaw właściwości CadRasterizationOptions.PageWidth i CadRasterizationOptions.PageHeight w sposób jawny, lub możesz napotkać ImageSaveException.
Dodatkowo możesz określić opcje skali wymiarów. Opcje skalowania są ustawiane przez właściwość CadRasterizationOptions.ScaleMethod. Użyj tej opcji, aby automatycznie dostosować wymiary obrazu zgodnie z wartościami CadRasterizationOptions.PageWidth i CadRasterizationOptions.PageHeight. Domyślnie CadRasterizationOptions.ScaleMethod jest ustawione na tryb ScaleType.ShrinkToFit. Ta właściwość definiuje następujące zachowanie:
- Jeśli wymiary rysunku CAD są większe niż rozmiar płótna, to wymiary rysunku są redukowane, aby dopasować się do powstałego płótna, zachowując proporcje.
- Jeśli wymiary rysunku CAD są mniejsze niż rozmiar płótna, ustaw właściwość CadRasterizationOptions.ScaleMethod na ScaleType.GrowToFit, aby zwiększyć rozmiar rysunku, aby dopasować się do płótna PDF, zachowując proporcje.
- Lub wyłącz automatyczne skalowanie za pomocą opcji ScaleType.None.
Poniższy przykład kodu pokazuje, jak wykorzystać opcję automatycznego skalowania.
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); |
Ustawianie kolorów tła i rysunku
Domyślnie paleta kolorów dla powstałego płótna jest ustawiona na wspólny schemat dokumentu. Oznacza to, że wszystkie encje w rysunku CAD są rysowane czarnym kolorem na jednolitym białym tle. Te ustawienia można zmienić za pomocą właściwości CadRasterizationOptions.BackgroundColor i CadRasterizationOptions.DrawColor. Zmiana właściwości CadRasterizationOptions.DrawColor wymaga także ustawienia właściwości CadRasterizationOptions.DrawType, aby skorzystać z koloru rysowania. Właściwość CadRasterizationOptions.DrawType kontroluje, czy encje CAD zachowują swoje kolory, czy są konwertowane na kolory niestandardowe. Aby zachować kolory encji, określ CadRasterizationOptions.DrawType jako CadDrawTypeMode.UseObjectColor, w przeciwnym razie wybierz wartość CadDrawTypeMode.UseDrawColor.
Poniższy przykład kodu pokazuje, jak używać różnych właściwości kolorów.
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); |
Ustawianie automatycznego skalowania układu
Większość rysunków CAD ma więcej niż jeden układ zapisany w pojedynczym pliku, a każdy układ może mieć różne wymiary. Podczas renderowania takich rysunków CAD do PDF, każda strona PDF może mieć różne skalowanie zgodnie z rozmiarami układów. Aby uczynić renderowanie jednorodnym, API Aspose.CAD udostępniło właściwość CadRasterizationOptions.AutomaticLayoutsScaling. Jej domyślna wartość to false, ale kiedy jest ustawiona na true, API spróbuje wyszukać odpowiednią skalę dla każdego osobnego układu i narysować je w odpowiedni sposób wykonując automatyczną operację zmiany rozmiaru zgodnie z rozmiarem strony.
Oto jak właściwość CadRasterizationOptions.AutomaticLayoutsScaling działa w połączeniu z właściwością CadRasterizationOptions.ScaleMethod.
- Jeśli ScaleMethod jest ustawione na ScaleType.ShrinkToFit lub ScaleType.GrowToFit przy AutomaticLayoutsScaling ustawionym na false, wszystkie układy (w tym Model) będą przetwarzane zgodnie z pierwszą opcją.
- Jeśli ScaleMethod jest ustawione na ScaleType.ShrinkToFit lub ScaleType.GrowToFit przy AutomaticLayoutsScaling ustawionym na true, wszystkie układy (z wyjątkiem Modelu) będą przetwarzane zgodnie z ich rozmiarami, podczas gdy Model będzie przetwarzany zgodnie z pierwszą opcją.
- Jeśli ScaleMethod jest ustawione na ScaleType.None przy AutomaticLayoutsScaling ustawionym na true lub false, to żadne skalowanie nie będzie wykonywane.
Poniższy przykład kodu pokazuje, jak ustawić automatyczne skalowanie układu dla konwersji CAD do 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); |
Konwersja układów CAD do formatów obrazów rastrowych
API Aspose.CAD dla Javy jest w stanie konwertować układy CAD obsługiwanych formatów, takich jak DXF i DWG, do obrazów rastrowych, takich jak PNG, BMP, TIFF, JPEG i GIF. API także zapewnia wsparcie do renderowania konkretnych układów rysunku CAD do różnych warstw PSD. API Aspose.CAD dla Javy udostępniło wydajne i łatwe w użyciu środki do określenia listy wymaganych układów CAD i renderowania ich do formatów obrazów rastrowych. Oto jak możesz to osiągnąć w 5 prostych krokach, jak wymieniono poniżej.
- Załaduj plik CAD do instancji Image używając metody fabrycznej load.
- Utwórz instancję CadRasterizationOptions i ustaw jej obowiązkowe właściwości, takie jak PageWidth i PageHeight.
- Określ żądane nazwy układu/y przy użyciu właściwości CadRasterizationOptions.Layouts.
- Utwórz instancję ImageOptionsBase i ustaw jej właściwość VectorRasterizationOptions na instancję CadRasterizationOptions utworzoną w poprzednim kroku.
- Wywołaj Image.Save, przekazując ścieżkę pliku (lub obiekt MemoryStream) oraz instancję ImageOptionsBase utworzoną w poprzednim kroku.
Oto kompletny kod źródłowy.
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); |
Włączanie śledzenia procesu renderowania CAD
Aspose.CAD wprowadziło szereg klas i wspierających pól wyliczeniowych, aby pomóc w śledzeniu procesu renderowania CAD. Dzięki tym zmianom, konwersję CAD do PDF można teraz osiągnąć w następujący sposób, włączając śledzenie.
// 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++; | |
} | |
} | |
} |
Śledzenie procesu renderowania CAD może zidentyfikować następujące potencjalne problemy.
- Brakujące lub uszkodzone informacje nagłówkowe.
- Brakujące informacje o układzie.
- Brakujące encje blokowe.
- Brakujące style wymiarów.
- Brakujące style.
Zastępowanie czcionek podczas konwersji rysunków CAD
Jest całkiem możliwe, że dany rysunek CAD używa konkretnej czcionki, która nie jest dostępna na maszynie, na której odbywa się konwersja CAD do PDF lub CAD do obrazów rastrowych. W takich sytuacjach API Aspose.CAD wyzwoli odpowiedni wyjątek, aby podkreślić brakujące czcionki i przerwać proces konwersji, ponieważ API wymaga tych czcionek, aby poprawnie renderować zawartość na powstałym PDF i/lub obrazach. API Aspose.CAD zapewnia łatwy sposób wykorzystania mechanizmu do zastępowania wymaganych czcionek czcionkami dostępnymi. Właściwość CadImage.Styles zwraca instancję CadStylesDictionary, która z kolei zawiera CadStyleTableObject dla każdego stylu w rysunku CAD, podczas gdy CadStyleTableObject.PrimaryFontName można użyć do określenia dostępnej nazwy czcionki.
Poniższy fragment kodu demonstruje użycie API Aspose.CAD dla Javy do zmiany czcionki wszystkich stylów w rysunku 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"); | |
} | |
Możliwe jest także zmienienie czcionki tylko jednego konkretnego stylu, uzyskując do niego dostęp za pośrednictwem nazwy stylu. Poniższy fragment kodu demonstruje zastosowanie tego podejścia.
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"); |
Konwersja warstw CAD do formatów obrazów rastrowych
API Aspose.CAD dla Javy udostępniło wydajne i łatwe w użyciu środki do określenia nazwy wymaganej warstwy CAD i renderowania jej do formatów obrazów rastrowych. Oto jak możesz to osiągnąć w 5 prostych krokach, jak wymieniono poniżej.
- Załaduj plik CAD do instancji Image używając metody fabrycznej load.
- Utwórz instancję CadRasterizationOptions i ustaw jej obowiązkowe właściwości, takie jak PageWidth i PageHeight.
- Dodaj żądane nazwy warstw przy użyciu metody CadRasterizationOptions.Layers.add.
- Utwórz instancję ImageOptionsBase i ustaw jej właściwość VectorRasterizationOptions na instancję CadRasterizationOptions utworzoną w poprzednim kroku.
- Wywołaj metodę Image.save, przekazując ścieżkę pliku (lub obiekt MemoryStream) oraz instancję ImageOptionsBase utworzoną w poprzednim kroku.
Oto kompletny kod źródłowy.
// 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); |
Konwersja wszystkich warstw CAD na oddzielne obrazy
Możesz uzyskać wszystkie warstwy z rysunku CAD, używając CadImage.Layers i renderować każdą warstwę na oddzielnym obrazie, jak pokazano poniżej.
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); | |
} |
Konwersja warstw CAD DWF do formatów obrazów rastrowych
API Aspose.CAD dla Javy udostępniło wydajne i łatwe w użyciu środki do określenia nazwy wymaganej warstwy CAD i renderowania jej do formatów obrazów rastrowych. Oto jak możesz to osiągnąć w 5 prostych krokach, jak wymieniono poniżej.
- Załaduj plik CAD DWF do instancji Image używając metody fabrycznej Load.
- Utwórz instancję CadRasterizationOptions i ustaw jej obowiązkowe właściwości, takie jak PageWidth i PageHeight.
- Dodaj żądaną nazwę warstwy przy użyciu metody CadRasterizationOptions.Layers.Add.
- Utwórz instancję ImageOptionsBase i ustaw jej właściwość VectorRasterizationOptions na instancję CadRasterizationOptions utworzoną w poprzednim kroku.
- Wywołaj metodę Image.Save, przekazując ścieżkę pliku (lub obiekt MemoryStream) oraz instancję ImageOptionsBase utworzoną w poprzednim kroku.
Oto kompletny kod źródłowy.
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); | |