Convertire i Disegni CAD in Formati PDF e Immagine Raster

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.

  1. Carica il file CAD in un’istanza di Image.
  2. Crea un’istanza di CadRasterizationOptions e imposta le proprietà obbligatorie come PageWidth e PageHeight.
  3. Crea un’istanza di ImageOptionsBase e imposta la sua proprietà VectorRasterizationOptions all’istanza di CadRasterizationOptions creata nel passaggio precedente.
  4. 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 PredefinitoRichiestaDescrizione
PageWidth0Specificare la larghezza della pagina.
PageHeight0Specificare l’altezza della pagina.
ScaleMethodScaleType.ShrinkToFitNoSpecifica 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.
BackgroundColorColor.WhiteNoSpecifica il colore di sfondo dell’immagine di output.
DrawTypeCadDrawTypeMode.UseDrawColorNoSpecifica 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.
DrawColorColor.BlackNoSpecifica il colore dell’entità sovrascritto (solo se DrawType è impostato sul valore della proprietà UseDrawColor).
AutomaticLayoutsScalingFalseNoSpecifica 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.

  1. 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.
  2. 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.
  3. 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.

  1. Carica il file CAD in un’istanza di Image utilizzando il metodo factory load.
  2. Crea un’istanza di CadRasterizationOptions e imposta le sue proprietà obbligatorie come PageWidth e PageHeight.
  3. Specifica il nome del layout desiderato utilizzando la proprietà CadRasterizationOptions.Layouts.
  4. Crea un’istanza di ImageOptionsBase e imposta la sua proprietà VectorRasterizationOptions all’istanza di CadRasterizationOptions creata nel passaggio precedente.
  5. 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.

  1. Informazioni di intestazione mancanti o danneggiate.
  2. Informazioni di layout mancanti.
  3. Entità di blocco mancanti.
  4. Stili dimensionale mancanti.
  5. 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.

  1. Carica il file CAD in un’istanza di Image utilizzando il metodo factory load.
  2. Crea un’istanza di CadRasterizationOptions e imposta le sue proprietà obbligatorie come PageWidth e PageHeight.
  3. Aggiungi il nome del layer desiderato utilizzando il metodo CadRasterizationOptions.Layers.add.
  4. Crea un’istanza di ImageOptionsBase e imposta la sua proprietà VectorRasterizationOptions all’istanza di CadRasterizationOptions creata nel passaggio precedente.
  5. 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.

  1. Carica il file CAD DWF in un’istanza di Image utilizzando il metodo factory Load.
  2. Crea un’istanza di CadRasterizationOptions e imposta le sue proprietà obbligatorie come PageWidth e PageHeight.
  3. Aggiungi il nome del layer desiderato utilizzando il metodo CadRasterizationOptions.Layers.Add.
  4. Crea un’istanza di ImageOptionsBase e imposta la sua proprietà VectorRasterizationOptions all’istanza di CadRasterizationOptions creata nel passaggio precedente.
  5. 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);