PDF를 이미지 형식으로 변환

Aspose.PDF for Java는 PDF 문서를 BMP, JPEG, GIF, PNG, EMF, TIFF, SVG와 같은 이미지 형식으로 변환할 수 있도록 두 가지 접근 방식을 제공합니다. 변환은 Device를 사용하거나 SaveOption을 사용하여 수행됩니다.

라이브러리에는 가상 장치를 사용하여 이미지를 변환할 수 있도록 하는 여러 클래스가 있습니다. DocumentDevice는 전체 문서 변환을 지향하지만, ImageDevice는 특정 페이지를 위해 사용됩니다.

DocumentDevice 클래스를 사용하여 PDF 변환

Aspose.PDF for Java는 PDF 페이지를 TIFF 이미지로 변환할 수 있습니다.

TiffDevice 클래스는 PDF 페이지를 TIFF 이미지로 변환할 수 있도록 합니다. 이 클래스는 PDF 파일의 모든 페이지를 단일 TIFF 이미지로 변환할 수 있는 Process라는 메서드를 제공합니다.

PDF 페이지를 하나의 TIFF 이미지로 변환하기

Aspose.PDF for Java는 PDF 파일의 모든 페이지를 단일 TIFF 이미지로 변환하는 방법을 설명합니다:

  1. Document 클래스의 객체를 생성합니다.
  2. 문서를 변환하기 위해 Process 메서드를 호출합니다.
  3. 출력 파일의 속성을 설정하려면 TiffSettings 클래스를 사용합니다.

다음 코드 스니펫은 모든 PDF 페이지를 하나의 TIFF 이미지로 변환하는 방법을 보여줍니다.

// 문서 열기
String documentFileName = Paths.get(DATA_DIR.toString(), "PageToTIFF.pdf").toString();
Document document = new Document(documentFileName);

// Resolution 객체 생성
Resolution resolution = new Resolution(300);

// TiffSettings 객체 생성
TiffSettings tiffSettings = new TiffSettings();
tiffSettings.setCompression(CompressionType.None);
tiffSettings.setDepth(ColorDepth.Default);
tiffSettings.setShape(ShapeType.Landscape);
tiffSettings.setSkipBlankPages(false);

// TIFF 장치 생성
TiffDevice tiffDevice = new TiffDevice(resolution, tiffSettings);

// 특정 페이지를 변환하고 이미지를 스트림에 저장
tiffDevice.process(document, DATA_DIR + "AllPagesToTIFF_out.tif");

단일 페이지를 TIFF 이미지로 변환

Aspose.PDF for Java는 PDF 파일의 특정 페이지를 TIFF 이미지로 변환할 수 있습니다. 변환을 위해 페이지 번호를 인수로 받는 Process(..) 메서드의 오버로드된 버전을 사용하세요. 다음 코드 스니펫은 PDF의 첫 페이지를 TIFF 형식으로 변환하는 방법을 보여줍니다.

// 문서 열기
String documentFileName = Paths.get(DATA_DIR.toString(), "PageToTIFF.pdf").toString();
String tiffFileName = Paths.get(DATA_DIR.toString(), "PageToTIFF_out.tif").toString();
Document document = new Document(documentFileName);

// 해상도 객체 생성
Resolution resolution = new Resolution(300);

// TiffSettings 객체 생성
TiffSettings tiffSettings = new TiffSettings();
tiffSettings.setCompression(CompressionType.None);
tiffSettings.setDepth(ColorDepth.Default);
tiffSettings.setShape(ShapeType.Landscape);

// TIFF 디바이스 생성
TiffDevice tiffDevice = new TiffDevice(resolution, tiffSettings);

// 특정 페이지를 변환하고 이미지를 스트림에 저장
tiffDevice.process(document, 1, 1, tiffFileName);

변환 중 Bradley 알고리즘 사용

Aspose.PDF for Java는 LZW 압축을 사용하여 PDF를 TIFF로 변환하는 기능을 지원하고 있으며 AForge를 사용하여 이진화를 적용할 수 있습니다. 그러나 고객 중 일부는 Otsu를 사용하여 임계값을 얻어야 하는 이미지를 요청했기 때문에 Bradley도 사용하고 싶어했습니다.

// 문서 열기
String documentFileName = Paths.get(DATA_DIR.toString(), "PageToTIFF.pdf").toString();
Document document = new Document(documentFileName);

String outputImageFileName = Paths.get(DATA_DIR.toString(), "resultant_out.tif").toString();
String outputBinImageFileName = Paths.get(DATA_DIR.toString(), "tiff-bin_out.tif").toString();

java.io.OutputStream outputImageFile = new java.io.FileOutputStream(outputImageFileName);
java.io.OutputStream outputBinImageFile = new java.io.FileOutputStream(outputBinImageFileName);

// Resolution 객체 생성
Resolution resolution = new Resolution(300);
// TiffSettings 객체 생성
TiffSettings tiffSettings = new TiffSettings();
tiffSettings.setCompression(CompressionType.LZW);
tiffSettings.setDepth(ColorDepth.Format1bpp);

// TIFF 장치 생성
TiffDevice tiffDevice = new TiffDevice(resolution, tiffSettings);
// 특정 페이지를 변환하고 이미지를 스트림에 저장
tiffDevice.process(document, outputImageFile);
outputImageFile.close();

// 출력 이미지를 저장할 스트림 객체 생성
java.io.InputStream inStream = new java.io.FileInputStream(outputImageFileName);
tiffDevice.binarizeBradley(inStream, outputBinImageFile, 0.1);

PDF 페이지를 픽셀화된 TIFF 이미지로 변환

PDF 파일의 모든 페이지를 픽셀화된 TIFF 형식으로 변환하려면 IndexedConversionType의 Pixelated 옵션을 사용하십시오.

// PDF 페이지를 픽셀화된 TIFF 이미지로 변환
// PDF 파일의 모든 페이지를 픽셀화된 TIFF 형식으로 변환하려면 IndexedConversionType의
// Pixelated 옵션을 사용하십시오.

// 문서 열기
String documentFileName = Paths.get(DATA_DIR.toString(), "PageToTIFF.pdf").toString();
Document document = new Document(documentFileName);

// 출력 이미지를 저장할 스트림 객체 생성
java.io.OutputStream imageStream = new java.io.FileOutputStream("Image.tiff");

// 해상도 객체 생성
com.aspose.pdf.devices.Resolution resolution = new com.aspose.pdf.devices.Resolution(300);

// TiffSettings 객체 인스턴스화
com.aspose.pdf.devices.TiffSettings tiffSettings = new com.aspose.pdf.devices.TiffSettings();

// 결과 TIFF 이미지의 압축 설정
tiffSettings.setCompression(com.aspose.pdf.devices.CompressionType.CCITT4);
// 결과 이미지의 색상 깊이 설정
tiffSettings.setDepth(com.aspose.pdf.devices.ColorDepth.Format4bpp);
// PDF를 TIFF로 렌더링하는 동안 빈 페이지 건너뛰기
tiffSettings.setSkipBlankPages(true);
// 이미지 밝기 설정
tiffSettings.setBrightness(.5f);

// IndexedConversion Type 설정, 기본값은 simple
tiffSettings.setIndexedConversionType(IndexedConversionType.Pixelated);

// 특정 해상도로 TiffDevice 객체 생성
TiffDevice tiffDevice = new TiffDevice(2480, 3508, resolution, tiffSettings);

// 특정 페이지(Page 1)를 변환하고 이미지를 스트림에 저장
tiffDevice.process(document, 1, 1, imageStream);

// 스트림 닫기
imageStream.close();

ImageDevice 클래스를 사용하여 PDF 변환하기

ImageDeviceBmpDevice, JpegDevice, GifDevice, PngDeviceEmfDevice의 선조입니다.

  • BmpDevice 클래스는 PDF 페이지를 BMP 이미지로 변환할 수 있게 해줍니다.

  • EmfDevice 클래스는 PDF 페이지를 EMF 이미지로 변환할 수 있게 해줍니다.

  • JpegDevice 클래스는 PDF 페이지를 JPEG 이미지로 변환할 수 있게 해줍니다.

  • PngDevice 클래스는 PDF 페이지를 PNG 이미지로 변환할 수 있도록 합니다.

  • GifDevice 클래스는 PDF 페이지를 GIF 이미지로 변환할 수 있도록 합니다.

PDF 페이지를 이미지로 변환하는 방법을 살펴보겠습니다.

BmpDevice 클래스는 Process라는 메서드를 제공하여 PDF 파일의 특정 페이지를 BMP 이미지 형식으로 변환할 수 있도록 합니다. 다른 클래스들도 동일한 메서드를 가지고 있습니다. 따라서 PDF 페이지를 이미지로 변환하려면 필요한 클래스를 인스턴스화하기만 하면 됩니다.

다음 코드 스니펫은 이 가능성을 보여줍니다:

package com.aspose.pdf.examples.conversion;

import com.aspose.pdf.Document;
import com.aspose.pdf.devices.*;

import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;

/**
 * PDF를 이미지로 변환합니다.
 */
public final class ConvertPDFtoImage {
    private static final Path DATA_DIR = Paths.get("/home/aspose/pdf-examples/Samples");

    private ConvertPDFtoImage() {

    }

    public static void run() throws IOException {
        runConvertPdfUsingImageDevice();
    }

    public static void runConvertPdfUsingImageDevice() throws IOException {
        // Resolution 객체 생성
        Resolution resolution = new Resolution(300);
        BmpDevice bmpDevice = new BmpDevice(resolution);
        JpegDevice jpegDevice = new JpegDevice(resolution);
        GifDevice gifDevice = new GifDevice(resolution);
        PngDevice pngDevice = new PngDevice(resolution);
        EmfDevice emfDevice = new EmfDevice(resolution);

        Document document = new Document(DATA_DIR + "ConvertAllPagesToBmp.pdf");

        convertPDFtoImages(bmpDevice, "bmp", document);
        convertPDFtoImages(jpegDevice, "jpeg", document);
        convertPDFtoImages(gifDevice, "gif", document);
        convertPDFtoImages(pngDevice, "png", document);
        convertPDFtoImages(emfDevice, "emf", document);
    }

    public static void convertPDFtoImages(
            ImageDevice imageDevice,
            String ext,
            Document document)
            throws IOException {
        for (int pageCount = 1; pageCount <= document.getPages().size(); pageCount++) {
            java.io.OutputStream imageStream = new java.io.FileOutputStream(
                    DATA_DIR + "image" + pageCount + "_out." + ext);
            // 특정 페이지를 변환하고 이미지를 스트림에 저장
            imageDevice.process(document.getPages().get_Item(pageCount), imageStream);

            // 스트림 닫기
            imageStream.close();
        }
    }
}

SaveOptions 클래스를 사용하여 PDF 변환

이 기사 부분은 Java와 SaveOptions 클래스를 사용하여 PDF를 SVG로 변환하는 방법을 보여줍니다.

**스케일러블 벡터 그래픽스(SVG)**는 정적 및 동적(인터랙티브 또는 애니메이션) 2차원 벡터 그래픽을 위한 XML 기반 파일 형식의 사양 가족입니다. SVG 사양은 1999년부터 월드 와이드 웹 컨소시엄(W3C)에 의해 개발되고 있는 오픈 표준입니다.

SVG 이미지와 그 동작은 XML 텍스트 파일로 정의됩니다. 이는 검색, 인덱싱, 스크립트 작성이 가능하며, 필요시 압축할 수도 있다는 것을 의미합니다. XML 파일로서, SVG 이미지는 텍스트 편집기로 생성하고 편집할 수 있지만, 일반적으로 Inkscape와 같은 드로잉 프로그램으로 작성하는 것이 더 편리합니다.

PDF 페이지를 SVG 이미지로 변환

Aspose.PDF for Java는 PDF 파일을 SVG 형식으로 변환하는 기능을 지원합니다. 이 요구 사항을 충족하기 위해 SvgSaveOptions 클래스가 com.aspose.pdf 패키지에 도입되었습니다. SvgSaveOptions의 객체를 인스턴스화하고 Document.save(..) 메서드의 두 번째 인수로 전달합니다.

다음 코드 스니펫은 PDF 파일을 SVG 형식으로 변환하는 단계를 보여줍니다.

package com.aspose.pdf.examples.conversion;

import com.aspose.pdf.Document;
import com.aspose.pdf.SvgSaveOptions;

import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;

/**
 * PDF를 SVG로 변환합니다.
 */
public class ConvertPDFtoSVG {
    // 문서 디렉토리 경로입니다.
    private static final Path DATA_DIR = Paths.get("/home/aspose/pdf-examples/Samples");

    private ConvertPDFtoSVG() {

    }

    public static void run() throws IOException {
        String pdfFileName = Paths.get(DATA_DIR.toString(), "input.pdf").toString();
        String svgFileName = Paths.get(DATA_DIR.toString(), "PDFToSVG_out.svg").toString();

        // PDF 문서 로드
        Document document = new Document(pdfFileName);

        // SvgSaveOptions의 객체 인스턴스화
        SvgSaveOptions saveOptions = new SvgSaveOptions();

        // SVG 이미지를 Zip 아카이브로 압축하지 않음
        saveOptions.setCompressOutputToZipArchive(false);

        // SVG 파일로 출력 저장
        document.save(svgFileName, saveOptions);
        document.close();
    }
}