Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

Вам понадобится рендеринг 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

Ответ 2

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

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

        PDFDocument document = new PDFDocument();
        document.load(new File("input.pdf"));
    
  • Создайте рендеринг

        SimpleRenderer renderer = new SimpleRenderer();
    
        // set resolution (in DPI)
        renderer.setResolution(300);
    
  • Render

        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, установленный на вашем поле.

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

Ответ 3

Apache PDF Box может конвертировать PDF файлы в jpg, bmp, wbmp, png и gif.

Для этого библиотека даже поставляется с утилитой командной строки под названием PDFToImage.

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

Ответ 5

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

Ответ 6

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