Java에서 PDF의 고해상도 이미지 압축

Java에서 PDF의 고해상도 이미지 압축

2022-10-19 last update

6 minutes reading java pdf api compress
일반적으로 PDF 파일에는 텍스트와 이미지가 모두 포함될 수 있으며 이러한 이미지로 인해 파일 크기가 커지는 경우가 많습니다. 따라서 대용량 PDF 파일의 업로드 및 전송에 영향을 미칠 수 있습니다. 이 기사에서는 PDF 파일의 고해상도 이미지를 프로그래밍 방식으로 압축하여 파일 크기를 줄이는 방법을 배웁니다. 저해상도 이미지는 더 이상 압축되지 않습니다.

설치



Java에서 이 작업을 완료하려면 Java API용 Free Spire.PDF를 사용해야 합니다. 다음은 무료 API의 Jar 종속성을 Java 애플리케이션으로 가져오는 2가지 방법입니다.
방법 1: free API을 다운로드하고 압축을 풉니다. 그런 다음 Spire.Pdf.jar 파일을 프로젝트에 종속성으로 추가합니다.

방법 2: pom.xml에 다음 구성을 추가하여 jar 종속성을 maven 프로젝트에 직접 추가합니다.

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.pdf.free</artifactId>
        <version>5.1.0</version>
    </dependency>
</dependencies>


샘플 코드



Java용 Free Spire.PDF에서 제공하는 PdfPageBase.tryCompressImage(int imgIndex) 메서드를 사용하면 PDF 파일의 고해상도 이미지를 압축할 수 있습니다. 전체 샘플 코드는 아래의 광고입니다.

import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.exporting.PdfImageInfo;

public class CompressImage {
    public static void main(String[] args) {

        //Load the sample PDF document
        PdfDocument doc = new PdfDocument("C:\\Users\\Administrator\\Desktop\\sample.pdf");

        //Set IncrementalUpdate to false
        doc.getFileInfo().setIncrementalUpdate(false);

        //Declare a PdfPageBase variable
        PdfPageBase page;

        //Loop through the pages 
        for (int i = 0; i < doc.getPages().getCount(); i++) {

            //Get the specific page
            page = doc.getPages().get(i);
            if (page != null) {

                if(page.getImagesInfo() != null){

                    //Loop through the images in the page
                    for (PdfImageInfo info: page.getImagesInfo()) {

                        //Use tryCompressImage method the compress high-resolution images
                        page.tryCompressImage(info.getIndex());
                    }
                }
            }
        }

        //Save to file
        doc.saveToFile("Compressed.pdf");
    }
}