CAD図面をPDFおよびラスター画像形式に変換する
Aspose.CAD for Javaは、出力文書にAPIおよびバージョン番号に関する情報を直接書き込みます。たとえば、文書をPDFにレンダリングすると、Aspose.CAD for Javaはアプリケーションフィールドに値「Aspose.CAD」を、PDF Producerフィールドに値(例: ‘Aspose.CAD v 17.9’)を設定します。
Aspose.CAD for Javaにこの情報を出力文書から変更または削除するよう指示することはできませんのでご注意ください。
CAD図面をラスター画像形式に変換する
Aspose.CAD for Javaは、DXFやDWGなどのCAD描画形式を、PNG、BMP、TIFF、JPEGおよびGIFなどのサポートされているラスター画像形式に変換することができます。Aspose.CAD for Java APIは、この目的を達成するための効率的で使いやすい手段を提供しています。 サポートされるCAD描画形式をラスター画像形式に変換するための簡単な手順は以下のとおりです。
- CADファイルをImageのインスタンスにロードします。
- CadRasterizationOptionsのインスタンスを作成し、PageWidthやPageHeightなどの必須プロパティを設定します。
- ImageOptionsBaseのインスタンスを作成し、そのVectorRasterizationOptionsプロパティを前のステップで作成したCadRasterizationOptionsのインスタンスに設定します。
- ファイルパス(またはMemoryStreamのオブジェクト)および前のステップで作成したImageOptionsBaseのインスタンスを引数にしてImage.saveを呼び出します。
以下は完全なソースコードです。
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); |
デフォルトでは、APIは「モデル」レイアウトのみをレンダリングします。ただし、CAD図面を画像形式に変換する際に、希望するレイアウトを指定することもできます。
CAD変換のカスタマイズ
CADからPDFおよびCADからラスター画像への変換手順は、高度に構成可能です。これは、CadRasterizationOptionsクラスが、アプリケーションのニーズに応じてレンダリングプロセスをオーバーライドできる多くのオプション機能を提供するように実装されているからです。
CadRasterizationOptionsクラス
CadRasterizationOptionsクラスは、DWGやDXFなどのすべてのサポートされているCAD形式に共通であるため、この文書で共有されている情報は、上記のCAD形式の両方に有効です。
最も便利なCadRasterizationOptionsクラスのプロパティは次のとおりです。
プロパティ | デフォルト値 | 必須 | 説明 |
---|---|---|---|
PageWidth | 0 | はい | ページの幅を指定します。 |
PageHeight | 0 | はい | ページの高さを指定します。 |
ScaleMethod | ScaleType.ShrinkToFit | いいえ | 描画が自動的にスケーリングされるべきかどうかを指定します。デフォルト値は、キャンバスサイズに合うように画像を自動的に縮小します。GrowToFitモードに切り替えるか、None設定を使用して自動スケーリングを無効にします。 |
BackgroundColor | Color.White | いいえ | 出力画像の背景色を指定します。 |
DrawType | CadDrawTypeMode.UseDrawColor | いいえ | エンティティの色付けモードを指定します。エンティティをそのネイティブカラーで描画するためにUseObjectColorオプションを指定するか、ネイティブカラーをオーバーライドするためにUseDrawColorオプションを指定します。 |
DrawColor | Color.Black | いいえ | オーバーライドされたエンティティの色を指定します(DrawTypeがUseDrawColorプロパティ値に設定されている場合のみ)。 |
AutomaticLayoutsScaling | False | いいえ | モデルレイアウトに一致させるために自動レイアウトのスケーリングを実行する必要があるかどうかを指定します。 |
キャンバスのサイズとモードの設定
CADからPDFまたはCADからラスター画像形式へのエクスポートは、容易なタスクではありません。生成されたPDFまたは画像にはキャンバスサイズを定義する必要があるため、描画を適切にレンダリングするためにPDFページの出力寸法を指定する必要があります。CadRasterizationOptions.PageWidthおよびCadRasterizationOptions.PageHeightプロパティを明示的に設定するか、ImageSaveExceptionが発生します。
さらに、寸法スケールオプションを指定できます。スケーリングオプションは、CadRasterizationOptions.ScaleMethodプロパティによって設定されます。このオプションを使用して、CadRasterizationOptions.PageWidthおよびCadRasterizationOptions.PageHeightの値に基づいて画像の寸法を自動的に調整します。デフォルトで、CadRasterizationOptions.ScaleMethodはScaleType.ShrinkToFitモードに設定されています。このプロパティは、以下の動作を定義します:
- CAD図面の寸法が生成されるキャンバスサイズよりも大きい場合、描画の寸法はアスペクト比を保持しながら生成されたキャンバスに収まるように縮小されます。
- CAD図面の寸法が生成されるキャンバスサイズよりも小さい場合、CadRasterizationOptions.ScaleMethodプロパティをScaleType.GrowToFitに設定し、アスペクト比を保持しながら描画のサイズをPDFキャンバスに収まるように拡大します。
- または、ScaleType.Noneオプションで自動スケーリングを無効にします。
以下のコードサンプルは、自動スケーリングオプションの使用を示しています。
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); |
背景色と描画色の設定
デフォルトでは、生成されたキャンバスのカラーパレットは、一般的な文書スキームに設定されています。これは、CAD図面内のすべてのエンティティが、白い背景に黒いペンで描画されることを意味します。これらの設定は、CadRasterizationOptions.BackgroundColorとCadRasterizationOptions.DrawColorプロパティで変更できます。CadRasterizationOptions.DrawColorプロパティを変更するには、描画に使用する色を利用するためにCadRasterizationOptions.DrawTypeプロパティも設定することが必要です。CadRasterizationOptions.DrawTypeプロパティは、CADエンティティがその色を保持するか、カスタム色に変換されるかを制御します。エンティティの色を保持するためには、CadRasterizationOptions.DrawTypeをCadDrawTypeMode.UseObjectColorとして指定し、そうでない場合は、CadDrawTypeMode.UseDrawColorの値を指定します。
以下のコードサンプルは、異なる色プロパティの使用方法を示しています。
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); |
自動レイアウトスケーリングの設定
ほとんどのCAD図面には、単一ファイル内に複数のレイアウトが保存されており、それぞれのレイアウトは異なる寸法を持つ可能性があります。このようなCAD図面をPDFにレンダリングする際、PDFの各ページはレイアウトサイズに応じて異なるスケーリングを持つ可能性があります。レンダリングを均一にするために、Aspose.CAD APIはCadRasterizationOptions.AutomaticLayoutsScalingプロパティを公開しています。そのデフォルト値はfalseですが、trueにすると、APIは各レイアウトに対応するスケールを検索し、ページサイズに応じた自動リサイズ操作を実行して描画します。
以下は、CadRasterizationOptions.AutomaticLayoutsScalingプロパティがCadRasterizationOptions.ScaleMethodプロパティと協力してどのように機能するかです。
- ScaleMethodがScaleType.ShrinkToFitまたはScaleType.GrowToFitに設定され、AutomaticLayoutsScalingがfalseに設定されている場合、すべてのレイアウト(モデルを含む)は最初のオプションに従って処理されます。
- ScaleMethodがScaleType.ShrinkToFitまたはScaleType.GrowToFitに設定され、AutomaticLayoutsScalingがtrueに設定されている場合、すべてのレイアウト(モデルを除く)はそのサイズに基づいて処理され、モデルは最初のオプションに従って処理されます。
- ScaleMethodがScaleType.Noneに設定され、AutomaticLayoutsScalingがtrueまたはfalseに設定されている場合、スケーリングは行われません。
以下のコードサンプルは、CADから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); |
CADレイアウトをラスター画像形式に変換する
Aspose.CAD for Java APIは、DXFやDWGなどのサポートされている形式のCADレイアウトを、PNG、BMP、TIFF、JPEG、GIFなどのラスター画像に変換することができます。APIは、CAD図面の特定のレイアウトを異なるPSDレイヤーにレンダリングするサポートも提供します。 Aspose.CAD for Java APIは、要求されるCADレイアウトのリストを指定し、それらをラスター画像形式にレンダリングするための効率的で使いやすい手段を提供しています。以下は、5つの簡単な手順で同様のことを達成する方法です。
- Loadファクトリメソッドを使用してCADファイルをImageのインスタンスにロードします。
- CadRasterizationOptionsのインスタンスを作成し、PageWidthやPageHeightなどの必須プロパティを設定します。
- CadRasterizationOptions.Layoutsプロパティを使用して、希望するレイアウト名を指定します。
- ImageOptionsBaseのインスタンスを作成し、そのVectorRasterizationOptionsプロパティを前のステップで作成したCadRasterizationOptionsのインスタンスに設定します。
- ファイルパス(またはMemoryStreamのオブジェクト)および前のステップで作成したImageOptionsBaseのインスタンスを引数にしてImage.Saveを呼び出します。
以下は完全なソースコードです。
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); |
CADレンダリングプロセスの追跡を有効にする
Aspose.CADは、CADレンダリングプロセスの追跡を支援するための一連のクラスとサポートする列挙型フィールドを導入しました。こうした変更のもと、CADからPDFへの変換は、追跡を有効にしながら以下のように実現できるようになりました。
// 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++; | |
} | |
} | |
} |
CADレンダリングプロセスの追跡は、以下のような問題を検出できます。
- ヘッダー情報の欠如または破損。
- レイアウト情報の欠如。
- ブロックエンティティの欠如。
- 寸法スタイルの欠如。
- スタイルの欠如。
CAD図面を変換する際のフォントの置き換え
特定のCAD図面が、CADからPDFまたはCADからラスター画像への変換が行われているマシン上にない特定のフォントを使用する可能性があります。そのような状況では、Aspose.CAD APIは適切な例外を発生させ、必要なフォントが正しく結果のPDFや画像にコンテンツをレンダリングするために必要であるため、変換プロセスを停止します。 Aspose.CAD APIは、必要なフォントを使用可能なフォントに置き換えるためのメカニズムを簡単に使用できる方法を提供しています。CadImage.Stylesプロパティは、CAD図面内の各スタイルのCadStyleTableObjectを含むCadStylesDictionaryのインスタンスを返します。CadStyleTableObject.PrimaryFontNameを使用して、利用可能なフォント名を指定できます。
以下のコードスニペットは、Aspose.CAD for Java APIを使用して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"); | |
} | |
特定のスタイルのフォントをスタイル名を介してアクセスすることで変更することも可能です。以下のコードスニペットはこのアプローチの使用を示しています。
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レイヤーをラスター画像形式に変換する
Aspose.CAD for Java APIは、必要なCADレイヤーの名前を指定し、それをラスター画像形式にレンダリングするための効率的で使いやすい手段を提供しています。以下は、5つの簡単な手順で同様のことを達成する方法です。
- Loadファクトリメソッドを使用してCADファイルをImageのインスタンスにロードします。
- CadRasterizationOptionsのインスタンスを作成し、PageWidthやPageHeightなどの必須プロパティを設定します。
- CadRasterizationOptions.Layers.addメソッドを使用して、希望するレイヤー名を追加します。
- ImageOptionsBaseのインスタンスを作成し、そのVectorRasterizationOptionsプロパティを前のステップで作成したCadRasterizationOptionsのインスタンスに設定します。
- ファイルパス(またはMemoryStreamのオブジェクト)および前のステップで作成したImageOptionsBaseのインスタンスを引数にしてImage.saveメソッドを呼び出します。
以下は完全なソースコードです。
// 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); |
すべてのCADレイヤーを個別の画像に変換する
CadImage.Layersを使用してCAD図面からすべてのレイヤーを取得し、各レイヤーを別々の画像としてレンダリングできます。以下に示します。
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レイヤーをラスター画像形式に変換する
Aspose.CAD for Java APIは、必要なCADレイヤーの名前を指定し、それをラスター画像形式にレンダリングするための効率的で使いやすい手段を提供しています。以下は、5つの簡単な手順で同様のことを達成する方法です。
- DWF CADファイルをImageのインスタンスにLoadファクトリメソッドを使用してロードします。
- CadRasterizationOptionsのインスタンスを作成し、PageWidthやPageHeightなどの必須プロパティを設定します。
- CadRasterizationOptions.Layers.Addメソッドを使用して、希望するレイヤー名を追加します。
- ImageOptionsBaseのインスタンスを作成し、そのVectorRasterizationOptionsプロパティを前のステップで作成したCadRasterizationOptionsのインスタンスに設定します。
- ファイルパス(またはMemoryStreamのオブジェクト)および前のステップで作成したImageOptionsBaseのインスタンスを引数にしてImage.Saveメソッドを呼び出します。
以下は完全なソースコードです。
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); | |