使用iText从PDF获取页面并将其保存为图像文件

4
有一个pdf文件,我想将第二页作为图像导入并保存为jpeg文件。这是否可行,如何操作?
这是导入一个页面的代码:
Document document = new Document();
File file = File.createTempFile("", "");
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(file));
document.open();

final int backPage = 2;
PdfReader reader = new PdfReader(pdf.getAbsolutePath());
PdfImportedPage importedPage = writer.getImportedPage(reader, backPage);
com.lowagie.text.Image image = com.lowagie.text.Image.getInstance(importedPage);

现在我有一个image实例,但我不知道如何将其写入jpeg文件。


2个回答

5

Image.getInstance(importedPage)并不会(正如人们可能认为的那样)将所指定的页面呈现为某些位图,而只是创建一个包装对象,使导入的页面更容易添加到另一个PDF中。

iText不是PDF渲染工具,特别是旧的com.lowagie变体。您可能需要查看不同的产品,例如JPedal


3

根据1T3XT BVBA的说法,您只能从PDF页面保存iText图像,而不能保存光栅图像。如果您要在以后将其放在另一个PDF页面中使用,则可以将其存储在任何地方...否则,您将需要使用类似JPedal的工具:

http://www.idrsolutions.com/convert-pdf-to-images/

===================================

编辑:也许PDFBox也可以为您完成!:

http://pdfbox.apache.org/commandlineutilities/PDFToImage.html

http://gal-levinsky.blogspot.it/2011/11/convert-pdf-to-image-via-pdfbox.html


谢谢,但很遗憾JPedal不是免费的,而且非常昂贵。 - Freewind
同意。另一种方法是从您的应用程序运行许多免费命令行转换器之一(例如Unix),以在文件系统上执行工作,然后获取生成的文件... 但这不是纯Java,并且在此过程中可能会出现许多问题... - Andrea Ligios
我稍后会尝试使用pdfbox。由于它对中文字符的支持不太好,我不确定它是否能生成正确的图像。 - Freewind

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接