[java] Apache PDFBox로 PDF 파일 압축하기

PDF 파일은 종종 용량이 크고, 이로 인해 파일 전송이나 저장에 문제를 일으킬 수 있습니다. 이러한 경우 PDF 파일을 압축하여 용량을 줄이는 것이 유용합니다. 이번 블로그 포스트에서는 Apache PDFBox 라이브러리를 사용하여 Java 코드로 PDF 파일을 압축하는 방법에 대해 알아보겠습니다.

Apache PDFBox 라이브러리 설치하기

먼저, Apache PDFBox 라이브러리를 설치해야 합니다. Apache PDFBox는 Java로 작성된 오픈 소스 라이브러리로, PDF 파일을 다루는 다양한 기능을 제공합니다. 다음과 같이 Maven을 사용하여 라이브러리를 추가할 수 있습니다:

<dependency>
    <groupId>org.apache.pdfbox</groupId>
    <artifactId>pdfbox</artifactId>
    <version>2.0.25</version>
</dependency>

PDF 파일 압축하기

이제 PDF 파일을 압축하는 코드를 작성해보겠습니다. 아래의 Java 코드는 PDF 파일을 읽어들인 다음, compressPDF 메소드를 호출하여 압축된 버전의 PDF를 생성합니다.

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDDocumentCatalog;
import org.apache.pdfbox.pdmodel.PageMode;
import org.apache.pdfbox.pdmodel.common.PDPageMode;
import org.apache.pdfbox.pdmodel.graphics.color.PDDeviceGray;
import org.apache.pdfbox.pdmodel.interactive.documentnavigation.destination.PDPageXYZDestination;

import java.io.File;
import java.io.IOException;

public class PDFCompressor {

    public static void main(String[] args) {
        String inputFilePath = "path/to/input.pdf";
        String outputFilePath = "path/to/output.pdf";

        try {
            PDDocument document = PDDocument.load(new File(inputFilePath));
            compressPDF(document, outputFilePath);
            document.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void compressPDF(PDDocument document, String outputFilePath) throws IOException {
        // 압축 설정 변경
        PDDocumentCatalog catalog = document.getDocumentCatalog();
        catalog.setPageMode(PageMode.USE_OC);

        // PDF 저장
        document.save(outputFilePath);
    }
}

위의 코드에서 inputFilePath 변수에 압축할 원본 PDF 파일의 경로를, outputFilePath 변수에 압축된 PDF 파일의 경로를 지정하면 됩니다. compressPDF 메소드에서는 PageModeUSE_OC로 설정하여 압축을 수행하고, document.save 메소드를 호출하여 압축된 PDF 파일을 저장합니다.

실행 결과

위의 코드를 실행하면 지정된 경로에 압축된 PDF 파일이 생성됩니다. 생성된 파일은 원본 PDF 파일보다 용량이 작고, 동일한 내용을 포함하고 있습니다. 이렇게 압축된 PDF 파일은 파일 전송 및 저장시 효율적으로 사용할 수 있습니다.

결론

Apache PDFBox는 용량이 큰 PDF 파일을 압축하는 간단하고 효과적인 방법을 제공합니다. 이번 포스트에서는 PDF 파일을 압축하는 방법에 대해 알아보았습니다. PDF 파일의 용량 문제를 해결하고, 효율적으로 파일을 관리할 수 있도록 이러한 기술을 적용해 보세요. ```

References