Java에서 PDF 이미지 압축

13339 단어 compresspdfimagejava
이미지의 높은 품질은 종종 PDF 문서의 크기가 커지는 원인입니다. 고품질 이미지를 압축하면 파일 크기를 50%에서 90%까지 크게 줄일 수 있습니다. 이 기사에서는 다음 두 가지 측면에서 PDF 이미지를 압축하는 방법을 소개합니다.
  • 고품질 이미지만 자동으로 압축
  • 이미지를 어느 정도 압축합니다
  • .

    Spire.Pdf.jar 설치



    Maven을 사용하는 경우 프로젝트의 pom.xml 파일에 다음 코드를 추가하여 애플리케이션에서 Spire.Pdf.jar를 쉽게 가져올 수 있습니다. 비 Maven 프로젝트의 경우 this link에서 jar 파일을 다운로드하고 수동으로 애플리케이션의 종속성으로 추가합니다.

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


    예시 1. 고품질 이미지만 압축



    Spire.PDF는 PdfPageBase.getImagesInfo() 메서드를 제공하여 특정 페이지에서 이미지 정보를 검색합니다. 이미지 정보에는 PdfImageInfo.getIndex() 메서드에 의해 반환되는 이미지 인덱스가 포함됩니다. 그런 다음 PdfPageBase.tryCompressImage(int imgIndex) 메서드를 사용하여 지정된 이미지를 압축할 수 있습니다.

    tryCompressImage() 메서드는 고해상도 이미지만 압축합니다. 저품질 이미지는 더 이상 압축되지 않습니다.

    import com.spire.pdf.PdfDocument;
    import com.spire.pdf.PdfPageBase;
    import com.spire.pdf.exporting.PdfImageInfo;
    
    public class CompressHighQualityImage {
        public static void main(String[] args) {
    
            //Load the sample PDF document
            PdfDocument doc = new PdfDocument("C:\\Users\\Administrator\\Desktop\\Images.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("output/Compressed.pdf");
        }
    }
    




    예시 2. 이미지를 어느 정도 압축



    PDF 페이지에서 이미지 정보를 가져온 후 특정 이미지를 기반으로 PdfBitmap 개체를 만들 수 있습니다. PdfBitmap.setQuality() 메서드를 사용하여 이미지 품질을 어느 정도 줄인 다음 PdfPageBase.replaceImage() 메서드를 사용하여 문서에서 이전 이미지를 압축된 이미지로 바꿉니다.

    import com.spire.license.LicenseProvider;
    import com.spire.pdf.*;
    import com.spire.pdf.exporting.PdfImageInfo;
    import com.spire.pdf.graphics.PdfBitmap;
    
    public class CompressAllImages {
    
        public static void main(String[] args) {
    
            //Load the sample PDF document
            PdfDocument doc = new PdfDocument("C:\\Users\\Administrator\\Desktop\\Images.pdf");
    
            //Set IncrementalUpdate to false
            doc.getFileInfo().setIncrementalUpdate(false);
    
            //Loop through the pages
            for (int i = 0; i < doc.getPages().getCount(); i++) {
    
                //Get the specific page
                PdfPageBase page = doc.getPages().get(i);
    
                //Get image info from the page
                PdfImageInfo[] images = page.getImagesInfo();
    
                //Determine if there is any image in the pgae
                if (images != null && images.length > 0)
    
                    //Loop through the images
                    for (int j = 0; j < images.length; j++) {
    
                        //Get the specific image
                        PdfImageInfo image = images[j];
                        PdfBitmap bp = new PdfBitmap(image.getImage());
    
                        //Reset the image quality
                        bp.setQuality(40);
    
                        //Replace the old image with the compressed image
                        page.replaceImage(j, bp);
                    }
            }
    
            //Save to file
            doc.saveToFile("output/CompressAll.pdf", FileFormat.PDF);
            doc.close();
        }
    }
    


    좋은 웹페이지 즐겨찾기