CAD図面をPDFおよびラスター画像形式に変換する

CAD図面をラスター画像形式に変換する

Aspose.CAD for Javaは、DXFDWGなどのCAD描画形式を、PNGBMPTIFFJPEGおよびGIFなどのサポートされているラスター画像形式に変換することができます。Aspose.CAD for Java APIは、この目的を達成するための効率的で使いやすい手段を提供しています。 サポートされるCAD描画形式をラスター画像形式に変換するための簡単な手順は以下のとおりです。

  1. CADファイルをImageのインスタンスにロードします。
  2. CadRasterizationOptionsのインスタンスを作成し、PageWidthPageHeightなどの必須プロパティを設定します。
  3. ImageOptionsBaseのインスタンスを作成し、そのVectorRasterizationOptionsプロパティを前のステップで作成したCadRasterizationOptionsのインスタンスに設定します。
  4. ファイルパス(または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クラスは、DWGDXFなどのすべてのサポートされているCAD形式に共通であるため、この文書で共有されている情報は、上記のCAD形式の両方に有効です。

最も便利なCadRasterizationOptionsクラスのプロパティは次のとおりです。

プロパティデフォルト値必須説明
PageWidth0はいページの幅を指定します。
PageHeight0はいページの高さを指定します。
ScaleMethodScaleType.ShrinkToFitいいえ描画が自動的にスケーリングされるべきかどうかを指定します。デフォルト値は、キャンバスサイズに合うように画像を自動的に縮小します。GrowToFitモードに切り替えるか、None設定を使用して自動スケーリングを無効にします。
BackgroundColorColor.Whiteいいえ出力画像の背景色を指定します。
DrawTypeCadDrawTypeMode.UseDrawColorいいえエンティティの色付けモードを指定します。エンティティをそのネイティブカラーで描画するためにUseObjectColorオプションを指定するか、ネイティブカラーをオーバーライドするためにUseDrawColorオプションを指定します。
DrawColorColor.Blackいいえオーバーライドされたエンティティの色を指定します(DrawTypeUseDrawColorプロパティ値に設定されている場合のみ)。
AutomaticLayoutsScalingFalseいいえモデルレイアウトに一致させるために自動レイアウトのスケーリングを実行する必要があるかどうかを指定します。

キャンバスのサイズとモードの設定

CADからPDFまたはCADからラスター画像形式へのエクスポートは、容易なタスクではありません。生成されたPDFまたは画像にはキャンバスサイズを定義する必要があるため、描画を適切にレンダリングするためにPDFページの出力寸法を指定する必要があります。CadRasterizationOptions.PageWidthおよびCadRasterizationOptions.PageHeightプロパティを明示的に設定するか、ImageSaveExceptionが発生します。

さらに、寸法スケールオプションを指定できます。スケーリングオプションは、CadRasterizationOptions.ScaleMethodプロパティによって設定されます。このオプションを使用して、CadRasterizationOptions.PageWidthおよびCadRasterizationOptions.PageHeightの値に基づいて画像の寸法を自動的に調整します。デフォルトで、CadRasterizationOptions.ScaleMethodScaleType.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.BackgroundColorCadRasterizationOptions.DrawColorプロパティで変更できます。CadRasterizationOptions.DrawColorプロパティを変更するには、描画に使用する色を利用するためにCadRasterizationOptions.DrawTypeプロパティも設定することが必要です。CadRasterizationOptions.DrawTypeプロパティは、CADエンティティがその色を保持するか、カスタム色に変換されるかを制御します。エンティティの色を保持するためには、CadRasterizationOptions.DrawTypeCadDrawTypeMode.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プロパティと協力してどのように機能するかです。

  1. ScaleMethodScaleType.ShrinkToFitまたはScaleType.GrowToFitに設定され、AutomaticLayoutsScalingがfalseに設定されている場合、すべてのレイアウト(モデルを含む)は最初のオプションに従って処理されます。
  2. ScaleMethodScaleType.ShrinkToFitまたはScaleType.GrowToFitに設定され、AutomaticLayoutsScalingがtrueに設定されている場合、すべてのレイアウト(モデルを除く)はそのサイズに基づいて処理され、モデルは最初のオプションに従って処理されます。
  3. ScaleMethodScaleType.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つの簡単な手順で同様のことを達成する方法です。

  1. Loadファクトリメソッドを使用してCADファイルをImageのインスタンスにロードします。
  2. CadRasterizationOptionsのインスタンスを作成し、PageWidthPageHeightなどの必須プロパティを設定します。
  3. CadRasterizationOptions.Layoutsプロパティを使用して、希望するレイアウト名を指定します。
  4. ImageOptionsBaseのインスタンスを作成し、そのVectorRasterizationOptionsプロパティを前のステップで作成したCadRasterizationOptionsのインスタンスに設定します。
  5. ファイルパス(または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レンダリングプロセスの追跡は、以下のような問題を検出できます。

  1. ヘッダー情報の欠如または破損。
  2. レイアウト情報の欠如。
  3. ブロックエンティティの欠如。
  4. 寸法スタイルの欠如。
  5. スタイルの欠如。

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つの簡単な手順で同様のことを達成する方法です。

  1. Loadファクトリメソッドを使用してCADファイルをImageのインスタンスにロードします。
  2. CadRasterizationOptionsのインスタンスを作成し、PageWidthPageHeightなどの必須プロパティを設定します。
  3. CadRasterizationOptions.Layers.addメソッドを使用して、希望するレイヤー名を追加します。
  4. ImageOptionsBaseのインスタンスを作成し、そのVectorRasterizationOptionsプロパティを前のステップで作成したCadRasterizationOptionsのインスタンスに設定します。
  5. ファイルパス(または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つの簡単な手順で同様のことを達成する方法です。

  1. DWF CADファイルをImageのインスタンスにLoadファクトリメソッドを使用してロードします。
  2. CadRasterizationOptionsのインスタンスを作成し、PageWidthPageHeightなどの必須プロパティを設定します。
  3. CadRasterizationOptions.Layers.Addメソッドを使用して、希望するレイヤー名を追加します。
  4. ImageOptionsBaseのインスタンスを作成し、そのVectorRasterizationOptionsプロパティを前のステップで作成したCadRasterizationOptionsのインスタンスに設定します。
  5. ファイルパス(または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);