Conversion des dessins CAD en PDF et formats d'image raster
Aspose.CAD for Java écrit directement les informations concernant l’API et le numéro de version dans les documents de sortie. Par exemple, lors du rendu d’un document au format PDF, Aspose.CAD for Java remplit le champ Application avec la valeur ‘Aspose.CAD’ et le champ PDF Producer avec une valeur, par exemple ‘Aspose.CAD v 17.9’.
Veuillez noter que vous ne pouvez pas demander à Aspose.CAD for Java de changer ou de supprimer ces informations des documents de sortie.
Conversion des dessins CAD en formats d’image raster
Aspose.CAD for Java est capable de convertir des formats de dessins CAD tels que DXF & DWG en formats d’image raster pris en charge tels que PNG, BMP, TIFF, JPEG & GIF. L’API Aspose.CAD for Java a exposé des moyens efficaces et faciles à utiliser pour atteindre cet objectif. Vous pouvez convertir n’importe quel format de dessin CAD pris en charge en formats d’image raster en suivant les étapes simples décrites ci-dessous.
- Chargez le fichier CAD dans une instance de Image.
- Créez une instance de CadRasterizationOptions et définissez ses propriétés obligatoires telles que PageWidth & PageHeight.
- Créez une instance de ImageOptionsBase et définissez sa propriété VectorRasterizationOptions sur l’instance de CadRasterizationOptions créée à l’étape précédente.
- Appelez Image.save en passant le chemin du fichier (ou un objet MemoryStream) ainsi que l’instance de ImageOptionsBase créée à l’étape précédente.
Voici le code source complet.
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); |
Par défaut, l’API ne rend que la mise en page “Modèle”. Cependant, vous pouvez également spécifier les mises en page de votre choix lors de la conversion des dessins CAD en formats d’image.
Personnalisation de la conversion CAD
Les procédures de conversion CAD en PDF & CAD en image raster sont hautement configurables car la classe CadRasterizationOptions a été implémentée de telle manière qu’elle offre de nombreuses fonctionnalités optionnelles qui, une fois définies, peuvent remplacer le processus de rendu en fonction des besoins de l’application.
Classe CadRasterizationOptions
La classe CadRasterizationOptions est commune à tous les formats CAD pris en charge tels que DWG & DXF, par conséquent, les informations partagées dans cet article sont valables pour les deux formats CAD susmentionnés.
Les propriétés les plus utiles de la classe CadRasterizationOptions sont :
Propriété | Valeur par défaut | Requise | Description |
---|---|---|---|
PageWidth | 0 | Oui | Spécifie la largeur de la page. |
PageHeight | 0 | Oui | Spécifie la hauteur de la page |
ScaleMethod | ScaleType.ShrinkToFit | Non | Spécifie si le dessin doit être automatiquement mis à l’échelle. La valeur par défaut réduit automatiquement l’image pour s’adapter à la taille du canevas. Passez en mode GrowToFit ou utilisez le paramètre None pour désactiver l’échelle automatique. |
BackgroundColor | Color.White | Non | Spécifie la couleur d’arrière-plan de l’image de sortie. |
DrawType | CadDrawTypeMode.UseDrawColor | Non | Spécifie le mode de coloration des entités. Spécifiez l’option UseObjectColor pour dessiner des entités en utilisant leur couleur native, ou l’option UseDrawColor pour remplacer les couleurs natives. |
DrawColor | Color.Black | Non | Spécifie la couleur de l’entité remplacée (uniquement si DrawType est défini sur la valeur de propriété UseDrawColor). |
AutomaticLayoutsScaling | False | Non | Spécifie si l’échelle automatique des mises en page doit être effectuée pour correspondre à la mise en page du Modèle. |
Définir la taille et le mode du canevas
Exporter de CAD en PDF ou en formats d’image raster n’est pas une tâche triviale. Étant donné que le PDF ou l’image résultante nécessite que la taille du canevas soit définie, nous devons spécifier les dimensions de sortie pour que la page PDF puisse rendre correctement le dessin. Définissez explicitement les propriétés CadRasterizationOptions.PageWidth et CadRasterizationOptions.PageHeight, sinon vous risquez d’obtenir une ImageSaveException.
De plus, vous pouvez spécifier des options d’échelle de dimension. Les options d’échelle sont définies par la propriété CadRasterizationOptions.ScaleMethod. Utilisez cette option pour ajuster automatiquement les dimensions de l’image selon les valeurs CadRasterizationOptions.PageWidth et CadRasterizationOptions.PageHeight. Par défaut, CadRasterizationOptions.ScaleMethod est défini sur le mode ScaleType.ShrinkToFit. Cette propriété définit le comportement suivant :
- Si les dimensions du dessin CAD sont supérieures à la taille du canevas résultant, alors les dimensions de dessin sont réduites pour s’adapter au canevas résultant tout en préservant le rapport d’aspect.
- Si les dimensions du dessin CAD sont inférieures à la taille du canevas résultant, définissez la propriété CadRasterizationOptions.ScaleMethod sur ScaleType.GrowToFit afin d’augmenter la taille du dessin pour s’adapter au canevas PDF tout en préservant le rapport d’aspect.
- Ou désactivez l’échelle automatique avec l’option ScaleType.None.
L’exemple de code ci-dessous montre l’option d’échelle automatique en cours d’utilisation.
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); |
Définir les couleurs d’arrière-plan et de dessin
Par défaut, la palette de couleurs pour le canevas résultant est définie selon le schéma de document commun. Cela signifie que toutes les entités à l’intérieur du dessin CAD sont dessinées avec un stylo noir sur un fond blanc solide. Ces paramètres peuvent être modifiés avec les propriétés CadRasterizationOptions.BackgroundColor et CadRasterizationOptions.DrawColor. Changer la propriété CadRasterizationOptions.DrawColor nécessite également de définir la propriété CadRasterizationOptions.DrawType pour utiliser la couleur de dessin qui sera utilisée. La propriété CadRasterizationOptions.DrawType détermine si les entités CAD préservent leurs couleurs ou sont converties en couleurs personnalisées. Pour préserver les couleurs des entités, spécifiez CadRasterizationOptions.DrawType comme CadDrawTypeMode.UseObjectColor, sinon spécifiez la valeur CadDrawTypeMode.UseDrawColor.
L’exemple de code ci-dessous montre comment utiliser différentes propriétés de couleur.
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); |
Définir l’échelle automatique des mises en page
La plupart des dessins CAD ont plus d’un mise en page stockée dans un seul fichier, et chaque mise en page pourrait avoir des dimensions différentes. Lors du rendu de tels dessins CAD en PDF, chaque page du PDF pourrait avoir une échelle différente selon la taille de la mise en page. Afin de rendre le rendu homogène, les API Aspose.CAD ont exposé la propriété CadRasterizationOptions.AutomaticLayoutsScaling. Sa valeur par défaut est false, mais lorsqu’elle est vraie, l’API essaiera de rechercher une échelle correspondante pour chaque mise en page séparée et de les dessiner de manière correspondante en effectuant une opération de redimensionnement automatique selon la taille de la page.
Voici comment fonctionne la propriété CadRasterizationOptions.AutomaticLayoutsScaling en collaboration avec la propriété CadRasterizationOptions.ScaleMethod.
- Si ScaleMethod est défini sur ScaleType.ShrinkToFit ou ScaleType.GrowToFit avec AutomaticLayoutsScaling défini sur false, alors toutes les mises en page (y compris le Modèle) seront traitées selon la première option.
- Si ScaleMethod est défini sur ScaleType.ShrinkToFit ou ScaleType.GrowToFit avec AutomaticLayoutsScaling défini sur true, alors toutes les mises en page (sauf le Modèle) seront traitées selon leur taille tandis que le Modèle sera traité selon la première option.
- Si ScaleMethod est défini sur ScaleType.None avec AutomaticLayoutsScaling défini sur true ou false, alors aucune échelle ne sera effectuée.
L’exemple de code ci-dessous montre comment définir l’échelle automatique pour la conversion CAD en 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); |
Conversion des mises en page CAD en formats d’image raster
L’API Aspose.CAD for Java est capable de convertir des mises en page CAD de formats pris en charge tels que DXF & DWG en images raster telles que PNG, BMP, TIFF, JPEG & GIF. L’API fournit également la prise en charge du rendu des mises en page spécifiques d’un dessin CAD sur différentes couches PSD. L’API Aspose.CAD for Java a exposé des moyens efficaces et faciles à utiliser pour spécifier la liste des mises en page CAD requises et les rendre aux formats d’image raster. Voici comment vous pouvez réaliser cela en 5 étapes simples comme indiqué ci-dessous.
- Chargez le fichier CAD dans une instance de Image en utilisant la méthode de fabrique load.
- Créez une instance de CadRasterizationOptions et définissez ses propriétés obligatoires telles que PageWidth & PageHeight.
- Spécifiez le(s) nom(s) de mise en page souhaités en utilisant la propriété CadRasterizationOptions.Layouts.
- Créez une instance de ImageOptionsBase et définissez sa propriété VectorRasterizationOptions sur l’instance de CadRasterizationOptions créée à l’étape précédente.
- Appelez Image.Save en passant le chemin du fichier (ou un objet MemoryStream) ainsi que l’instance de ImageOptionsBase créée à l’étape précédente.
Voici le code source complet.
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); |
Activation du suivi pour le processus de rendu CAD
Aspose.CAD a introduit une série de classes et de champs d’énumération de soutien pour aider à suivre le processus de rendu CAD. Avec ces changements en place, la conversion CAD en PDF peut maintenant être réalisée comme suit tout en activant le suivi.
// 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++; | |
} | |
} | |
} |
Le suivi du processus de rendu CAD peut détecter les problèmes suivants :
- Informations d’en-tête manquantes ou corrompues.
- Informations de mise en page manquantes.
- Entités de bloc manquantes.
- Styles de dimension manquants.
- Styles manquants.
Substitution des polices lors de la conversion des dessins CAD
Il est tout à fait possible qu’un dessin CAD particulier utilise une police spécifique qui n’est pas disponible sur la machine où la conversion CAD en PDF ou en image raster a lieu. Dans de telles situations, l’API Aspose.CAD déclenchera une exception appropriée pour mettre en évidence la ou les polices manquantes et arrêter le processus de conversion car l’API nécessite ces polices pour rendre correctement le contenu sur le PDF et/ou les images résultants. L’API Aspose.CAD fournit un moyen facile d’utiliser le mécanisme pour substituer la ou les polices requises avec les polices disponibles. La propriété CadImage.Styles renvoie une instance de CadStylesDictionary qui contient à son tour le CadStyleTableObject pour chaque style dans le dessin CAD, tandis que le CadStyleTableObject.PrimaryFontName peut être utilisé pour spécifier le nom de la police disponible.
Le snippet de code suivant démontre l’utilisation de l’API Aspose.CAD for Java pour changer la police de tous les styles dans un dessin 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"); | |
} | |
Il est également possible de changer la police d’un style particulier en y accédant par son nom. Le snippet de code suivant démontre l’utilisation de cette approche.
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"); |
Conversion des couches CAD en formats d’image raster
L’API Aspose.CAD for Java a exposé un moyen efficace et facile à utiliser pour spécifier le nom de la couche CAD requise et la rendre aux formats d’image raster. Voici comment vous pouvez réaliser cela en 5 étapes simples comme indiqué ci-dessous.
- Chargez le fichier CAD dans une instance de Image en utilisant la méthode de fabrique load.
- Créez une instance de CadRasterizationOptions et définissez ses propriétés obligatoires telles que PageWidth & PageHeight.
- Ajoutez le nom de couche souhaité en utilisant la méthode CadRasterizationOptions.Layers.add.
- Créez une instance de ImageOptionsBase et définissez sa propriété VectorRasterizationOptions sur l’instance de CadRasterizationOptions créée à l’étape précédente.
- Appelez la méthode Image.save en passant le chemin du fichier (ou un objet MemoryStream) ainsi que l’instance de ImageOptionsBase créée à l’étape précédente.
Voici le code source complet.
// 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); |
Conversion de toutes les couches CAD en images séparées
Vous pouvez obtenir toutes les couches d’un dessin CAD en utilisant CadImage.Layers et rendre chaque couche à une image séparée comme démontré ci-dessous.
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); | |
} |
Conversion des couches DWF CAD en formats d’image raster
L’API Aspose.CAD for Java a exposé un moyen efficace et facile à utiliser pour spécifier le nom de la couche CAD requise et la rendre aux formats d’image raster. Voici comment vous pouvez réaliser cela en 5 étapes simples comme indiqué ci-dessous.
- Chargez le fichier DWF CAD dans une instance de Image en utilisant la méthode de fabrique Load.
- Créez une instance de CadRasterizationOptions et définissez ses propriétés obligatoires telles que PageWidth & PageHeight.
- Ajoutez le nom de la couche souhaitée en utilisant la méthode CadRasterizationOptions.Layers.Add.
- Créez une instance de ImageOptionsBase et définissez sa propriété VectorRasterizationOptions sur l’instance de CadRasterizationOptions créée à l’étape précédente.
- Appelez la méthode Image.Save en passant le chemin du fichier (ou un objet MemoryStream) ainsi que l’instance de ImageOptionsBase créée à l’étape précédente.
Voici le code source complet.
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); | |