2011-02-03 2 views
32

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

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

+1

О, мне было бы интересно узнать. Хорошо, если есть опция изменения размера. – Nishant

+2

http://stackoverflow.com/questions/356550/a-good-library-for-converting-pdf-to-tiff –

+0

@Nishant: когда вы получаете объект изображения, вы можете его преобразовать;) – Maxym

ответ

9

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

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

Это превращает Postscript файлы в BMP для нас, только в качестве руководства для изменения ваших потребностей (и PDF?) (Знайте, что Вы нуждаетесь в окр вары для гс работать!):

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 
+0

Hi Daniel, спасибо за быстрый ответ, могу ли я автоматизировать Ghostscript с помощью Java? Если возможно, как я могу это сделать? Где я могу найти очень хороший учебник Ghostscript, спасибо еще раз! –

+0

Возможно, посмотрите Ghost4J http://ghost4j.sourceforge.net/coreapisamples.html – anergy

+0

Не совсем верно, что «бесплатные рендеринги не могут красить встроенные шрифты» - по крайней мере, jPodRenderer делает это ... – mtraut

0

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

29

В библиотеке 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 на вашем поле.

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

+0

Эй, я получаю сообщение об ошибке «Исключение в потоке» main «java.lang.UnsatisfiedLinkError: Не удается загрузить библиотеку« gsdll32 »: указанный модуль не найден. " Я уже установил последнюю версию Ghostscript. Пожалуйста, помогите :( –

+1

Это означает, что библиотека Ghostscript не найдена ... На какой ОС вы работаете? Убедитесь, что .dll/.so находится на пути к системной библиотеке. – zippy1978

+0

Просто установка Ghostscript не работает для меня. это bu, отбрасывающее gsdll32.dll в папку проекта Eclipse. – MyTitle

21

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

В библиотеке есть утилита командной строки, называемая PDFToImage.

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

+0

это несколько противоречиво для изображений. Если в исходном PDF-файле есть «ColorPattern» (а не изображение, но похожее ... запутанное), оно не будет скопировано в desti изображение нации. http://stackoverflow.com/questions/28589477/pdfbox-pdf-to-image-losing-qr-code-colorspace-pattern-doesnt-provide-a-non-str?noredirect1_comment45487987_28589477 – mmcrae

+0

, но может быть улучшения в версии 2.x PDFBox! (надеется) – mmcrae

+1

См. https://pdfbox.apache.org/2.0/migration.html в PDF-рендеринге для получения подробной информации о том, как это сделать в PDFBox 2.0.0 – gordon613

1

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

+0

Вы связаны с этим продуктом? Пожалуйста, не забудьте прочитать faq на продвижение http://stackoverflow.com/faq#promotion – Leigh