Сжатие изображений высокого разрешения в PDF на Java

Обычно PDF-файл может содержать как текст, так и изображения, и именно эти изображения часто увеличивают размер файла. В результате загрузка и передача PDF-файла большого размера может быть затруднена. В этой статье вы узнаете, как программно сжать изображения высокого разрешения в PDF-файле, чтобы уменьшить его размер. Изображения с низким разрешением больше не будут сжиматься.

Установка

Чтобы выполнить эту задачу на Java, вам потребуется использовать бесплатный API Spire.PDF for Java. Ниже описаны 2 метода импорта Jar-зависимости бесплатного API в ваше Java-приложение.
Способ 1: Скачайте бесплатный API и распакуйте его. Затем добавьте файл Spire.Pdf.jar в свой проект в качестве зависимости.

Метод 2: непосредственно добавьте зависимость jar в проект maven, добавив следующие конфигурации в pom.xml.

<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>
Войти в полноэкранный режим Выйти из полноэкранного режима

Код примера

Метод PdfPageBase.tryCompressImage(int imgIndex), предлагаемый Free Spire.PDF for Java, позволяет сжимать изображения высокого разрешения в 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");
    }
}
Вход в полноэкранный режим Выход из полноэкранного режима

Оцените статью
Procodings.ru
Добавить комментарий