CAD 도면을 PDF 및 래스터 이미지 포맷으로 변환하기

CAD 도면을 래스터 이미지 포맷으로 변환하기

Aspose.CAD for Java는 다음과 같은 지원되는 래스터 이미지 포맷으로 글을 변환할 수 있는 CAD 도면 형식인 DXF & DWG를 지원합니다 PNG, BMP, TIFF, JPEG & GIF. Aspose.CAD for Java API는 이 목표를 달성하기 위한 효율적이고 사용하기 쉬운 수단을 제공합니다. 지원되는 모든 CAD 도면 형식을 래스터 이미지 포맷으로 변환할 수 있는 간단한 단계는 아래에 설명되어 있습니다.

  1. CAD 파일을 Image 인스턴스에 로드합니다.
  2. CadRasterizationOptions 인스턴스를 만들고 PageWidth & PageHeight와 같은 필수 속성을 설정합니다.
  3. ImageOptionsBase 인스턴스를 만들고 이전 단계에서 생성된 CadRasterizationOptions 인스턴스로 VectorRasterizationOptions 속성을 설정합니다.
  4. Image.save를 호출하여 파일 경로(또는 MemoryStream 객체)와 이전 단계에서 생성된 ImageOptionsBase 인스턴스를 전달합니다.

여기 전체 소스 코드가 있습니다.

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.PageWidthCadRasterizationOptions.PageHeight 속성을 명시적으로 설정해야 하며, 그렇지 않으면 ImageSaveException을 받을 수 있습니다.

또한 치수 비율 옵션을 지정할 수 있습니다. 크기 조정 옵션은 CadRasterizationOptions.ScaleMethod 속성에 의해 설정됩니다. 이 옵션을 사용하여 CadRasterizationOptions.PageWidthCadRasterizationOptions.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로 렌더링할 때 각 페이지는 레이아웃 크기에 따라 서로 다른 크기로 조정될 수 있습니다. 렌더링을 균일하게 만들기 위해 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의 인스턴스를 생성하고 이전 단계에서 생성된 CadRasterizationOptions 인스턴스로 VectorRasterizationOptions 속성을 설정합니다.
  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는 누락된 글꼴을 강조하고 변환 프로세스를 중단하는 적절한 예외를 트리거합니다. API는 이러한 글꼴이 결과 PDF 및/또는 이미지에 제대로 내용을 렌더링하는 데 필요합니다. Aspose.CAD API는 필요한 글꼴을 사용 가능한 글꼴로 대체하는 메커니즘을 쉽게 사용할 수 있는 방법을 제공합니다. CadImage.Styles 속성은 CAD 도면에 대한 각 스타일의 CadStyleTableObject를 포함하는 CadStylesDictionary 인스턴스를 반환합니다. 여기서 CadStyleTableObject.PrimaryFontName는 사용 가능한 글꼴 이름을 지정하는 데 사용할 수 있습니다.

다음 코드 스니펫은 CAD 도면의 모든 스타일의 글꼴을 변경하기 위한 Aspose.CAD for Java API 사용법을 보여줍니다.

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의 인스턴스를 생성하고 이전 단계에서 생성된 CadRasterizationOptions 인스턴스의 VectorRasterizationOptions 속성을 설정합니다.
  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의 인스턴스를 생성하고 이전 단계에서 생성된 CadRasterizationOptions 인스턴스의 VectorRasterizationOptions 속성을 설정합니다.
  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);