CAD-tekeningen converteren naar PDF en rasterafbeeldingsformaten

CAD-tekeningen naar rasterafbeeldingsformaten converteren

Aspose.CAD voor Java is in staat om CAD-tekeningformaten zoals DXF & DWG te converteren naar de ondersteunde rasterafbeeldingsformaten zoals PNG, BMP, TIFF, JPEG & GIF. De Aspose.CAD API voor Java heeft efficiënte en gebruiksvriendelijke middelen blootgesteld om dit doel te bereiken. Je kunt elk ondersteund CAD-tekeningformaat naar rasterafbeeldingsformaten converteren met behulp van de eenvoudige stappen die hieronder zijn uitgelegd.

  1. Laad het CAD-bestand in een instantie van Image.
  2. Maak een instantie van CadRasterizationOptions en stel de vereiste eigenschappen in zoals PageWidth & PageHeight.
  3. Maak een instantie van ImageOptionsBase en stel de VectorRasterizationOptions eigenschap in op de instantie van CadRasterizationOptions die in de vorige stap is gemaakt.
  4. Roep Image.save aan door het bestandspad (of een object van MemoryStream) door te geven, evenals de instantie van ImageOptionsBase die in de vorige stap is gemaakt.

Hier is de complete broncode.

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);

Standaard renderen de API alleen de “Model” lay-out. Je kunt echter ook de lay-outs van jouw keuze specificeren bij het converteren van CAD-tekeningen naar afbeeldingsformaten.

CAD-conversie aanpassen

De procedures voor CAD naar PDF & CAD naar rasterafbeelding conversies zijn zeer configureerbaar, omdat de CadRasterizationOptions klasse is geïmplementeerd op een manier die veel optionele functies biedt die, indien ingesteld, het renderingsproces kunnen overschrijven volgens de behoeften van de applicatie.

CadRasterizationOptions Klasse

De CadRasterizationOptions klasse is gemeenschappelijk voor alle ondersteunde CAD-formaten zoals DWG & DXF, daarom is de informatie die in dit artikel wordt gedeeld geldig voor beide genoemde CAD-formaten.

De meest nuttige eigenschappen van de CadRasterizationOptions klasse zijn:

EigenschapStandaardwaardeVereistBeschrijving
PageWidth0JaGeeft de paginabreedte aan.
PageHeight0JaGeeft de paginahoogte aan.
ScaleMethodScaleType.ShrinkToFitNeeGeeft aan of de tekening automatisch geschaald moet worden. De standaardwaarde verkleint de afbeelding automatisch om in de canvasmaat te passen. Schakel over naar de GrowToFit modus, of gebruik de None instelling om automatische schaling uit te schakelen.
BackgroundColorColor.WhiteNeeGeeft de achtergrondkleur van de uitvoer afbeelding aan.
DrawTypeCadDrawTypeMode.UseDrawColorNeeGeeft de kleuriseringsmodus van de entiteit aan. Specificeren van de UseObjectColor optie om entiteiten met hun eigen kleur te tekenen, of de UseDrawColor optie om de oorspronkelijke kleuren te overschrijven.
DrawColorColor.BlackNeeGeeft de overschreven kleur van de entiteit aan (alleen als DrawType is ingesteld op de waarde van de UseDrawColor eigenschap).
AutomaticLayoutsScalingFalseNeeGeeft aan of automatische lay-out schaling moet worden uitgevoerd om overeen te komen met de Model lay-out.

Canvasgrootte en modus instellen

Exporteren van CAD naar PDF of CAD naar rasterafbeeldingsformaten is geen triviale taak. Aangezien de resulterende PDF of afbeelding de canvasgrootte moet worden gedefinieerd, moeten we de uitvoerdimensies voor de PDF-pagina opgeven om de tekening correct weer te geven. Stel expliciet de CadRasterizationOptions.PageWidth en CadRasterizationOptions.PageHeight eigenschappen in, of je kunt een ImageSaveException krijgen.

Bovendien kun je dimensionale schaling opties specificeren. De schaalopties worden ingesteld door de CadRasterizationOptions.ScaleMethod eigenschap. Gebruik deze optie om de afbeeldingsdimensies automatisch aan te passen volgens de waarden van CadRasterizationOptions.PageWidth en CadRasterizationOptions.PageHeight. Standaard is CadRasterizationOptions.ScaleMethod ingesteld op ScaleType.ShrinkToFit modus. Deze eigenschap definieert het volgende gedrag:

  • Als de afmetingen van de CAD-tekening groter zijn dan de resulterende canvasgrootte, worden de afmetingen van de tekening verkleind om in de resulterende canvas te passen, waarbij de aspectverhouding behouden blijft.
  • Als de afmetingen van de CAD-tekening kleiner zijn dan de resulterende canvasgrootte, stel dan de CadRasterizationOptions.ScaleMethod eigenschap in op ScaleType.GrowToFit om de grootte van de tekening te vergroten zodat deze in de PDF-canvas past, terwijl de aspectverhouding behouden blijft.
  • Of schakel automatische schaling uit met de ScaleType.None optie.

Het onderstaande codevoorbeeld toont de automatische schaling optie in gebruik.

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);

Achtergrond- en tekenkleuren instellen

Standaard is het kleurenpalet voor de resulterende canvas ingesteld op het algemene documentenschema. Dat betekent dat alle entiteiten binnen de CAD-tekening worden getekend met een zwart kleurpen op een effen witte achtergrond. Deze instellingen kunnen worden gewijzigd met de CadRasterizationOptions.BackgroundColor en CadRasterizationOptions.DrawColor eigenschappen. Het wijzigen van de CadRasterizationOptions.DrawColor eigenschap vereist ook het instellen van de CadRasterizationOptions.DrawType eigenschap om gebruik te maken van de tekeningkleur die moet worden gebruikt. De CadRasterizationOptions.DrawType eigenschap bepaalt of CAD-entiteiten hun kleuren behouden of worden omgezet naar aangepaste kleuren. Om de kleuren van entiteiten te behouden, stel je CadRasterizationOptions.DrawType in als CadDrawTypeMode.UseObjectColor, anders specificeer je de waarde CadDrawTypeMode.UseDrawColor.

Het onderstaande codevoorbeeld toont hoe je verschillende kleur eigenschappen kunt gebruiken.

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);

Automatische lay-out schaling instellen

De meeste CAD-tekeningen hebben meer dan één lay-out opgeslagen in een enkel bestand, en elke lay-out kan verschillende afmetingen hebben. Bij het renderen van dergelijke CAD-tekeningen naar PDF, kan elke pagina van de PDF verschillende schaling hebben, afhankelijk van de lay-outgrootte. Om het renderingsproces homogeen te maken, hebben de Aspose.CAD APIs de CadRasterizationOptions.AutomaticLayoutsScaling eigenschap blootgelegd. De standaardwaarde is false, maar wanneer deze waar is, zal de API proberen een overeenkomstige schaal te zoeken voor elke afzonderlijke lay-out en deze op een overeenkomstige manier te tekenen door automatisch te schalen volgens de paginagrootte.

Hier is hoe de CadRasterizationOptions.AutomaticLayoutsScaling eigenschap werkt in samenwerking met de CadRasterizationOptions.ScaleMethod eigenschap.

  1. Als ScaleMethod is ingesteld op ScaleType.ShrinkToFit of ScaleType.GrowToFit met AutomaticLayoutsScaling ingesteld op false, dan worden alle lay-outs (inclusief het Model) verwerkt volgens de eerste optie.
  2. Als ScaleMethod is ingesteld op ScaleType.ShrinkToFit of ScaleType.GrowToFit met AutomaticLayoutsScaling ingesteld op true, dan worden alle lay-outs (behalve Model) verwerkt volgens hun grootte, terwijl het Model zal worden verwerkt volgens de eerste optie.
  3. Als ScaleMethod is ingesteld op ScaleType.None met AutomaticLayoutsScaling ingesteld op true of false, dan zal er geen schaling worden uitgevoerd.

Het onderstaande codevoorbeeld toont hoe je de automatische lay-out schaling voor CAD naar PDF conversie kunt instellen.

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-lay-outs naar rasterafbeeldingsformaten converteren

Aspose.CAD voor Java API is in staat om CAD-lay-outs van ondersteunde formaten zoals DXF & DWG naar rasterafbeeldingen zoals PNG, BMP, TIFF, JPEG & GIF te converteren. De API biedt ook ondersteuning om de specifieke lay-outs van een CAD-tekening naar verschillende PSD-lagen te renderen. Aspose.CAD voor Java API heeft efficiënte en gebruiksvriendelijke middelen blootgelegd om de lijst van vereiste CAD-lay-outs op te geven en deze naar rasterafbeeldingsformaten te renderen. Hier is hoe je hetzelfde kunt bereiken in 5 eenvoudige stappen, zoals hieronder vermeld.

  1. Laad het CAD-bestand in een instantie van Image met behulp van de fabrieksmethode load.
  2. Maak een instantie van CadRasterizationOptions en stel de vereiste eigenschappen in zoals PageWidth & PageHeight.
  3. Geef de gewenste lay-outnaam(len) op met behulp van de CadRasterizationOptions.Layouts eigenschap.
  4. Maak een instantie van ImageOptionsBase en stel de VectorRasterizationOptions eigenschap in op de instantie van CadRasterizationOptions die in de vorige stap is gemaakt.
  5. Roep Image.Save aan door het bestandspad (of een object van MemoryStream) door te geven, evenals de instantie van ImageOptionsBase die in de vorige stap is gemaakt.

Hier is de complete broncode.

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);

 

Tracking inschakelen voor het CAD-renderingsproces

Aspose.CAD heeft een reeks klassen en ondersteunende enumeratief velden geïntroduceerd om te helpen bij het volgen van het CAD-renderingsproces. Met deze wijzigingen kan de conversie van CAD naar PDF nu als volgt worden bereikt met inschakeling van tracking.

// 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++;
}
}
}

Tracking van het CAD-renderingsproces kan de volgende mogelijke problemen detecteren.

  1. Ontbrekende of beschadigde headerinformatie.
  2. Ontbrekende lay-outinformatie.
  3. Ontbrekende blokentiteiten.
  4. Ontbrekende dimensiestijlen.
  5. Ontbrekende stijlen.

Lettertypen vervangen bij het converteren van CAD-tekeningen

Het is heel goed mogelijk dat een bepaalde CAD-tekening een specifiek lettertype gebruikt dat niet beschikbaar is op de machine waar de conversie van CAD naar PDF of CAD naar rasterafbeelding plaatsvindt. In dergelijke situaties zal de Aspose.CAD API een geschikte uitzondering activeren om de ontbrekende lettertypen te benadrukken en het conversieproces te stoppen, omdat de API deze lettertypen nodig heeft om de inhoud correct op de resulterende PDF en/of afbeeldingen weer te geven. De Aspose.CAD API biedt een eenvoudige manier om de vereiste lettertypen te vervangen door de beschikbare lettertypen. De CadImage.Styles eigenschap retourneert een instantie van CadStylesDictionary die op zijn beurt de CadStyleTableObject voor elke stijl in de CAD-tekening bevat, terwijl de CadStyleTableObject.PrimaryFontName kan worden gebruikt om de beschikbare lettertype naam op te geven.

Het volgende codevoorbeeld demonstreert het gebruik van Aspose.CAD voor Java API om het lettertype van alle stijlen in een CAD-tekening te wijzigen.

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");
}

Het is ook mogelijk om het lettertype van slechts één bepaalde stijl te wijzigen door deze via de stijlnaam te openen. Het volgende codevoorbeeld demonstreert het gebruik van deze benadering.

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-lagen naar rasterafbeeldingsformaten converteren

Aspose.CAD voor Java API heeft een efficiënte en gebruiksvriendelijke manier blootgelegd om de naam van de vereiste CAD-laag op te geven en deze naar rasterafbeeldingsformaten te renderen. Hier is hoe je hetzelfde kunt bereiken in 5 eenvoudige stappen, zoals hieronder vermeld.

  1. Laad het CAD-bestand in een instantie van Image met behulp van de fabrieksmethode load.
  2. Maak een instantie van CadRasterizationOptions en stel de vereiste eigenschappen in zoals PageWidth & PageHeight.
  3. Voeg de gewenste laagnaam toe met behulp van de CadRasterizationOptions.Layers.add methode.
  4. Maak een instantie van ImageOptionsBase en stel de VectorRasterizationOptions eigenschap in op de instantie van CadRasterizationOptions die in de vorige stap is gemaakt.
  5. Roep de Image.save methode aan door het bestandspad (of een object van MemoryStream) door te geven, evenals de instantie van ImageOptionsBase die in de vorige stap is gemaakt.

Hier is de complete broncode.

// 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);

Converteer alle CAD-lagen naar afzonderlijke afbeeldingen

Je kunt alle lagen uit een CAD-tekening ophalen met behulp van de CadImage.Layers en elke laag naar een afzonderlijke afbeelding renderen zoals hieronder aangetoond.

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-lagen naar rasterafbeeldingsformaten converteren

Aspose.CAD voor Java API heeft een efficiënte en gebruiksvriendelijke manier blootgelegd om de naam van de vereiste CAD-laag op te geven en deze naar rasterafbeeldingsformaten te renderen. Hier is hoe je hetzelfde kunt bereiken in 5 eenvoudige stappen, zoals hieronder vermeld.

  1. Laad het DWF CAD-bestand in een instantie van Image met behulp van de fabrieksmethode Load.
  2. Maak een instantie van CadRasterizationOptions en stel de vereiste eigenschappen in zoals PageWidth & PageHeight.
  3. Voeg de gewenste laagnaam toe met behulp van de CadRasterizationOptions.Layers.Add methode.
  4. Maak een instantie van ImageOptionsBase en stel de VectorRasterizationOptions eigenschap in op de instantie van CadRasterizationOptions die in de vorige stap is gemaakt.
  5. Roep de Image.Save methode aan door het bestandspad (of een object van MemoryStream) door te geven, evenals de instantie van ImageOptionsBase die in de vorige stap is gemaakt.

Hier is de complete broncode.

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);