Я хочу конвертировать PDF-страницы в изображение (PNG, JPEG/JPG или GIF). Я хочу, чтобы они были в полностраничных размерах.
Как это можно сделать с помощью Java? Какие библиотеки доступны для достижения этого?
Я хочу конвертировать PDF-страницы в изображение (PNG, JPEG/JPG или GIF). Я хочу, чтобы они были в полностраничных размерах.
Как это можно сделать с помощью Java? Какие библиотеки доступны для достижения этого?
Вам понадобится рендеринг 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 для выполнения задания несколькими строками кода:
Загрузите файл 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, установленный на вашем поле.
Надеюсь, это вам поможет:)
Apache PDF Box может конвертировать PDF файлы в jpg, bmp, wbmp, png и gif.
Для этого библиотека даже поставляется с утилитой командной строки под названием PDFToImage.
Если вы загрузите исходный код и посмотрите класс PDFToImage, вы сможете выяснить, как использовать PDF Box для преобразования PDF файлов в изображения с вашего собственного кода Java.
Взгляните на статьи:
1) PdftoImage-Конвертировать PDF в изображение с помощью библиотеки PdfRenderer, прямая ссылка на исходный код
2) Java: создание PDF и предварительный просмотр его как изображения - iText и PDF Renderer
jPDFImages не является бесплатной, а представляет собой коммерческую библиотеку, которая преобразует страницы PDF в изображения в формате JPEG, TIFF или PNG. Размер выходного изображения настраивается.
Если GPL в порядке, вы можете посмотреть на jPodRenderer (SourceForge)