PDF для изображения с использованием Java

Я хочу конвертировать PDF страницы в изображение (PNG,JPEG/JPG или GIF). Я хочу их в полных страницах размеров.

Как это можно сделать с помощью Java? Какие библиотеки доступны для достижения этой цели?

6 ответов

Решение

Вам понадобится рендер PDF. На рынке есть несколько более или менее хороших (ICEPdf, pdfrenderer), но без этого вам придется полагаться на внешние инструменты. Свободные рендеры PDF также не могут отображать встроенные шрифты, и поэтому будут хороши только для создания миниатюр (что вы в конечном итоге хотите).

Мой любимый внешний инструмент - Ghostscript, который может конвертировать PDF-файлы в изображения с помощью одного вызова командной строки.

Это преобразует файлы Postscript (и PDF?) В bmp для нас, просто как руководство по изменению для ваших нужд (знайте, вам нужны env vars для работы gs!):

pushd 
setlocal

Set BIN_DIR=C:\Program Files\IKOffice_ACME\bin
Set GS=C:\Program Files\IKOffice_ACME\gs
Set GS_DLL=%GS%\gs8.54\bin\gsdll32.dll
Set GS_LIB=%GS%\gs8.54\lib;%GS%\gs8.54\Resource;%GS%\fonts
Set Path=%Path%;%GS%\gs8.54\bin
Set Path=%Path%;%GS%\gs8.54\lib

call "%GS%\gs8.54\bin\gswin32c.exe" -q -dSAFER -dNOPAUSE -dBATCH -sDEVICE#bmpmono -r600x600 -sOutputFile#%2 -f %1

endlocal
popd

В библиотеке Ghost4J (http://ghost4j.sourceforge.net), начиная с версии 0.4.0, вы можете использовать SimpleRenderer для выполнения работы с несколькими строками кода:

  1. Загрузите файл PDF или PS (используйте для этого класс PSDocument):

        PDFDocument document = new PDFDocument();
        document.load(new File("input.pdf"));
    
  2. Создать рендер

        SimpleRenderer renderer = new SimpleRenderer();
    
        // set resolution (in DPI)
        renderer.setResolution(300);
    
  3. оказывать

        List<Image> images = renderer.render(document);
    

Затем вы можете делать то, что вы хотите с вашими объектами изображений, например, вы можете написать их в формате PNG следующим образом:

            for (int i = 0; i < images.size(); i++) {
                ImageIO.write((RenderedImage) images.get(i), "png", new File((i + 1) + ".png"));
            }

Примечание. Ghost4J использует собственный API-интерфейс Ghostscript C, поэтому на вашем компьютере должен быть установлен Ghostscript.

Я надеюсь, что это поможет вам:)

Apache PDF Box может конвертировать PDF-файлы в JPG, BMP, WBMP, PNG и GIF.

Библиотека даже поставляется с утилитой командной строки PDFToImage, чтобы сделать это.

Если вы загрузите исходный код и посмотрите на класс PDFToImage, вы сможете понять, как использовать PDF Box для преобразования PDF-файлов в изображения из вашего собственного кода Java.

jPDFImages - это не бесплатная, а коммерческая библиотека, которая преобразует страницы PDF в изображения в формате JPEG, TIFF или PNG. Размер выходного изображения настраивается.

Если с GPL все в порядке, вы можете дополнительно взглянуть на jPodRenderer (SourceForge)

Другие вопросы по тегам