Convertire i Disegni CAD in Formati PDF e Immagine Raster
Aspose.CAD per Java scrive direttamente le informazioni su API e Numero di Versione nei documenti di output. Ad esempio, durante il rendering del Documento in PDF, Aspose.CAD per Java popola il campo Application con il valore ‘Aspose.CAD’ e il campo PDF Producer con un valore, ad esempio ‘Aspose.CAD v 17.9’.
Si prega di notare che non puoi istruire Aspose.CAD per Java a cambiare o rimuovere queste informazioni dai documenti di output.
Convertire i Disegni CAD in Formati di Immagine Raster
Aspose.CAD per Java è in grado di convertire i formati di disegno CAD come DXF e DWG in formati di immagine raster supportati come PNG, BMP, TIFF, JPEG e GIF. L’API Aspose.CAD per Java ha esposto mezzi efficienti e facili da usare per raggiungere questo obiettivo. Puoi convertire qualsiasi formato di disegno CAD supportato in formati di immagine raster seguendo i semplici passaggi descritti di seguito.
- Carica il file CAD in un’istanza di Image.
- Crea un’istanza di CadRasterizationOptions e imposta le proprietà obbligatorie come PageWidth e PageHeight.
- Crea un’istanza di ImageOptionsBase e imposta la sua proprietà VectorRasterizationOptions all’istanza di CadRasterizationOptions creata nel passaggio precedente.
- Chiama Image.save passando il percorso del file (o un oggetto di MemoryStream) e l’istanza di ImageOptionsBase creata nel passaggio precedente.
Ecco il codice sorgente completo.
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); |
Per impostazione predefinita, l’API rende solo il layout “Model”. Tuttavia, puoi anche specificare i layout di tua scelta mentre converte i disegni CAD in formati immagine.
Personalizzare la Conversione CAD
Le procedure di conversione da CAD a PDF e da CAD a immagine raster sono altamente configurabili perché la classe CadRasterizationOptions è stata implementata in modo tale da fornire molte funzionalità opzionali che, una volta impostate, possono sovrascrivere il processo di rendering secondo le esigenze dell’applicazione.
Classe CadRasterizationOptions
La classe CadRasterizationOptions è comune per tutti i formati CAD supportati come DWG e DXF, pertanto, le informazioni condivise in questo articolo sono valide per entrambi i formati CAD sopra citati.
Le proprietà più utili della classe CadRasterizationOptions sono:
Proprietà | Valore Predefinito | Richiesta | Descrizione |
---|---|---|---|
PageWidth | 0 | Sì | Specificare la larghezza della pagina. |
PageHeight | 0 | Sì | Specificare l’altezza della pagina. |
ScaleMethod | ScaleType.ShrinkToFit | No | Specifica se il disegno deve essere ridimensionato automaticamente. Il valore predefinito riduce automaticamente l’immagine per adattarsi alle dimensioni della tela. Passa alla modalità GrowToFit o utilizza l’impostazione None per disattivare il ridimensionamento automatico. |
BackgroundColor | Color.White | No | Specifica il colore di sfondo dell’immagine di output. |
DrawType | CadDrawTypeMode.UseDrawColor | No | Specifica il modo di colorazione dell’entità. Specifica l’opzione UseObjectColor per disegnare entità utilizzando il loro colore nativo, oppure l’opzione UseDrawColor per sovrascrivere i colori nativi. |
DrawColor | Color.Black | No | Specifica il colore dell’entità sovrascritto (solo se DrawType è impostato sul valore della proprietà UseDrawColor). |
AutomaticLayoutsScaling | False | No | Specifica se deve essere eseguito il ridimensionamento automatico del layout per adattarsi al layout Model. |
Impostazione delle Dimensioni e della Modalità della Tela
L’esportazione da CAD a PDF o da CAD a formati immagine raster non è un compito banale. Poiché il PDF risultante o l’immagine richiede che la dimensione della tela sia definita, è necessario specificare le dimensioni di output per la pagina PDF al fine di rendere correttamente il disegno. Imposta esplicitamente le proprietà CadRasterizationOptions.PageWidth e CadRasterizationOptions.PageHeight, altrimenti potresti ricevere un’ImageSaveException.
Inoltre, puoi specificare opzioni di scala delle dimensioni. Le opzioni di scaling sono impostate dalla proprietà CadRasterizationOptions.ScaleMethod. Utilizza questa opzione per regolare automaticamente le dimensioni dell’immagine in base ai valori CadRasterizationOptions.PageWidth e CadRasterizationOptions.PageHeight. Per impostazione predefinita, la CadRasterizationOptions.ScaleMethod è impostata sulla modalità ScaleType.ShrinkToFit. Questa proprietà definisce il seguente comportamento:
- Se le dimensioni del disegno CAD sono maggiori delle dimensioni della tela risultante, le dimensioni del disegno vengono ridotte per adattarsi alla tela risultante mantenendo il rapporto d’aspetto.
- Se le dimensioni del disegno CAD sono più piccole delle dimensioni della tela risultante, impostare la proprietà CadRasterizationOptions.ScaleMethod su ScaleType.GrowToFit per aumentare la dimensione del disegno affinché si adatti alla tela PDF mantenendo il rapporto d’aspetto.
- Oppure disattivare il ridimensionamento automatico con l’opzione ScaleType.None.
Il campione di codice qui sotto mostra l’opzione di ridimensionamento automatico in uso.
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); |
Impostazione dei Colori di Sfondo e di Disegno
Per impostazione predefinita, la tavolozza dei colori per la tela risultante è impostata sullo schema del documento comune. Ciò significa che tutte le entità all’interno del disegno CAD sono disegnate con una penna di colore nero su uno sfondo bianco solido. Queste impostazioni possono essere modificate con le proprietà CadRasterizationOptions.BackgroundColor e CadRasterizationOptions.DrawColor. La modifica della proprietà CadRasterizationOptions.DrawColor richiede anche di impostare la proprietà CadRasterizationOptions.DrawType per utilizzare il colore di disegno. La proprietà CadRasterizationOptions.DrawType controlla se le entità CAD preservano i loro colori o vengono convertite in colori personalizzati. Per preservare i colori delle entità, specificare CadRasterizationOptions.DrawType come CadDrawTypeMode.UseObjectColor, altrimenti specificare il valore CadDrawTypeMode.UseDrawColor.
Il campione di codice qui sotto mostra come utilizzare le diverse proprietà di colore.
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); |
Impostazione del Ridimensionamento Automatico del Layout
La maggior parte dei disegni CAD ha più di un layout memorizzato in un singolo file, e ogni layout potrebbe avere dimensioni diverse. Durante il rendering di tali disegni CAD in PDF, ogni pagina del PDF potrebbe avere scaling diverso in base alle dimensioni del layout. Per rendere il rendering omogeneo, le API Aspose.CAD hanno esposto la proprietà CadRasterizationOptions.AutomaticLayoutsScaling. Il suo valore predefinito è false ma quando è impostato a true, l’API cercherà di trovare una scala corrispondente per ciascun layout separato e disegnarli in modo corrispondente eseguendo un’operazione di ridimensionamento automatico in base alla dimensione della pagina.
Ecco come funziona la proprietà CadRasterizationOptions.AutomaticLayoutsScaling in collaborazione con la proprietà CadRasterizationOptions.ScaleMethod.
- Se ScaleMethod è impostato su ScaleType.ShrinkToFit o ScaleType.GrowToFit con AutomaticLayoutsScaling impostato su false, tutti i layout (inclusa la Model) saranno elaborati secondo la prima opzione.
- Se ScaleMethod è impostato su ScaleType.ShrinkToFit o ScaleType.GrowToFit con AutomaticLayoutsScaling impostato su true, tutti i layout (eccetto Model) saranno elaborati in base alle loro dimensioni mentre la Model sarà elaborata secondo la prima opzione.
- Se ScaleMethod è impostato su ScaleType.None con AutomaticLayoutsScaling impostato su true o false, non verrà eseguito alcun ridimensionamento.
Il campione di codice qui sotto mostra come impostare il ridimensionamento automatico del layout per la conversione da CAD a 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); |
Convertire i Layout CAD in Formati di Immagine Raster
L’API Aspose.CAD per Java è in grado di convertire i layout CAD di formati supportati come DXF e DWG in immagini raster come PNG, BMP, TIFF, JPEG e GIF. L’API fornisce anche supporto per il rendering dei layout specifici di un disegno CAD su diversi livelli PSD. L’API Aspose.CAD per Java ha esposto mezziefficienti e facili da usare per specificare l’elenco dei layout CAD richiesti e renderli in formati di immagine raster. Ecco come puoi raggiungere lo stesso in 5 semplici passaggi come elencato di seguito.
- Carica il file CAD in un’istanza di Image utilizzando il metodo factory load.
- Crea un’istanza di CadRasterizationOptions e imposta le sue proprietà obbligatorie come PageWidth e PageHeight.
- Specifica il nome del layout desiderato utilizzando la proprietà CadRasterizationOptions.Layouts.
- Crea un’istanza di ImageOptionsBase e imposta la sua proprietà VectorRasterizationOptions all’istanza di CadRasterizationOptions creata nel passaggio precedente.
- Chiama il metodo Image.Save passando il percorso del file (o un oggetto di MemoryStream) e l’istanza di ImageOptionsBase creata nel passaggio precedente.
Ecco il codice sorgente completo.
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); |
Abilitare il Monitoraggio per il Processo di Rendering CAD
Aspose.CAD ha introdotto una serie di classi e campi di enumerazione di supporto per assistere nel monitorare il processo di rendering CAD. Con questi cambiamenti in atto, la conversione da CAD a PDF può ora essere effettuata come segue abilitando il monitoraggio.
// 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++; | |
} | |
} | |
} |
Il monitoraggio del processo di rendering CAD può rilevare i seguenti problemi potenziali.
- Informazioni di intestazione mancanti o danneggiate.
- Informazioni di layout mancanti.
- Entità di blocco mancanti.
- Stili dimensionale mancanti.
- Stili mancanti.
Sostituire i Font durante la Conversione dei Disegni CAD
È possibile che un particolare disegno CAD utilizzi un font specifico che non è disponibile sulla macchina in cui si sta effettuando la conversione da CAD a PDF o da CAD a immagine raster. In tali situazioni, l’API Aspose.CAD attiverà un’eccezione appropriata per evidenziare il/ i font mancanti e interrompere il processo di conversione poiché l’API richiede questi font per rendere correttamente i contenuti sul PDF risultante e/o sulle immagini. L’API Aspose.CAD fornisce un modo semplice per utilizzare il meccanismo per sostituire i font richiesti con i font disponibili. La proprietà CadImage.Styles restituisce un’istanza di CadStylesDictionary che a sua volta contiene il CadStyleTableObject per ogni stile nel disegno CAD, mentre il CadStyleTableObject.PrimaryFontName può essere utilizzato per specificare il nome del font disponibile.
Il seguente snippet di codice dimostra l’uso dell’API Aspose.CAD per Java per cambiare il font di tutti gli stili in un disegno 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"); | |
} |
È anche possibile cambiare il font di un particolare stile accedendo ad esso tramite il nome dello stile. Il seguente snippet di codice dimostra l’uso di questo approccio.
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"); |
Convertire i Layer CAD in Formati di Immagine Raster
L’API Aspose.CAD per Java ha esposto un mezzo efficiente e facile da usare per specificare il nome del layer CAD richiesto e renderlo in formati di immagine raster. Ecco come puoi raggiungere lo stesso in 5 semplici passaggi come elencato di seguito.
- Carica il file CAD in un’istanza di Image utilizzando il metodo factory load.
- Crea un’istanza di CadRasterizationOptions e imposta le sue proprietà obbligatorie come PageWidth e PageHeight.
- Aggiungi il nome del layer desiderato utilizzando il metodo CadRasterizationOptions.Layers.add.
- Crea un’istanza di ImageOptionsBase e imposta la sua proprietà VectorRasterizationOptions all’istanza di CadRasterizationOptions creata nel passaggio precedente.
- Chiama il metodo Image.save passando il percorso del file (o un oggetto di MemoryStream) e l’istanza di ImageOptionsBase creata nel passaggio precedente.
Ecco il codice sorgente completo.
// 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); |
Convertire Tutti i Layer CAD in Immagini Separate
Puoi ottenere tutti i layer da un disegno CAD utilizzando CadImage.Layers e rendere ogni layer in un’immagine separata come dimostrato qui sotto.
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); | |
} |
Convertire i Layer CAD DWF in Formati di Immagine Raster
L’API Aspose.CAD per Java ha esposto un mezzo efficiente e facile da usare per specificare il nome del layer CAD richiesto e renderlo in formati di immagine raster. Ecco come puoi raggiungere lo stesso in 5 semplici passaggi come elencato di seguito.
- Carica il file CAD DWF in un’istanza di Image utilizzando il metodo factory Load.
- Crea un’istanza di CadRasterizationOptions e imposta le sue proprietà obbligatorie come PageWidth e PageHeight.
- Aggiungi il nome del layer desiderato utilizzando il metodo CadRasterizationOptions.Layers.Add.
- Crea un’istanza di ImageOptionsBase e imposta la sua proprietà VectorRasterizationOptions all’istanza di CadRasterizationOptions creata nel passaggio precedente.
- Chiama il metodo Image.Save passando il percorso del file (o un oggetto di MemoryStream) e l’istanza di ImageOptionsBase creata nel passaggio precedente.
Ecco il codice sorgente completo.
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); | |