it-swarm.com.ru

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

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

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

34
yohan.jayarathna

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

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

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

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

UPDATE: pdfbox теперь может встраивать шрифты, так что Ghostscript больше не нужен.

10
Daniel

В библиотеке 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.

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

31
zippy1978

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

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

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

25
Dónal Boyle
2
Maxym

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

1
alaris

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

0
mtraut