在上一章中,无涯教程已经了解了如何合并多个PDF文档。在本章中将了解如何从PDF文档页面提取图像。
PDF生成图像
PDFBox库为您提供了一个名为 PDFRenderer 的类,该类可将PDF文档渲染到AWT BufferedImage中。
以下是从PDF文档生成图像的步骤。
步骤1 - 加载现有文档
使用 PDDocument 类的静态方法 load()加载现有的PDF文档。该方法接受文件对象作为参数,因为这是一个静态方法,因此您可以使用类名调用它,如下所示。
File file=new File("path of the document") PDDocument document=PDDocument.load(file);
步骤2 - 实例化渲染类
名为 PDFRenderer 的类将PDF文档渲染到 AWT BufferedImage 中。因此,您需要实例化此类,如下所示。此类的构造方法接受一个文档对象。传递上一步中创建的文档对象,如下所示。
PDFRenderer renderer=new PDFRenderer(document);
步骤3 - PDF渲染图像
您可以使用Renderer类的方法 renderImage()在特定页面中呈现图像,您需要将要呈现图像的页面索引传递给该方法。
BufferedImage image=renderer.renderImage(0);
步骤4 - 将图像写入文件
您可以使用 write()方法将上一步中渲染的图像写入文件。对于此方法,您需要传递三个参数-
- 渲染的图像对象。
- 表示图像类型(jpg或png)的字符串。
- 您需要将提取的图像保存到的文件对象。
ImageIO.write(image, "JPEG", new File("C:/PdfBox_Examples/myimage.jpg"));
步骤5 - 关闭文档
最后,使用PDDocument类的 close()方法关闭文档,如下所示。
document.close();
完整示例
假设无涯教程有一个PDF文档— sample.pdf,位于路径C:\ PdfBox_Examples\中,并且其第一页中包含一个图像,如下所示。

本示例演示如何将上述PDF文档转换为图像文件。在这里,无涯教程将在PDF文档的第一页中检索图像并将其另存为 myimage.jpg 。将此代码另存为 PdfToImage.java
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;
public class PdfToImage {
public static void main(String args[]) throws Exception {
</span><span class="com">//加载现有的PDF文档</span><span class="pln">
</span><span class="typ">File</span><span class="pln"> file </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">File</span><span class="pun">(</span><span class="str">"C:/PdfBox_Examples/sample.pdf"</span><span class="pun">);</span><span class="pln">
</span><span class="typ">PDDocument</span><span class="pln"> document </span><span class="pun">=</span><span class="pln"> </span><span class="typ">PDDocument</span><span class="pun">.</span><span class="pln">load</span><span class="pun">(</span><span class="pln">file</span><span class="pun">);</span><span class="pln">
</span><span class="com">//实例化PDFRenderer类</span><span class="pln">
</span><span class="typ">PDFRenderer</span><span class="pln"> renderer </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">PDFRenderer</span><span class="pun">(</span><span class="pln">document</span><span class="pun">);</span><span class="pln">
</span><span class="com">//从PDF文档渲染图像</span><span class="pln">
</span><span class="typ">BufferedImage</span><span class="pln"> image </span><span class="pun">=</span><span class="pln"> renderer</span><span class="pun">.</span><span class="pln">renderImage</span><span class="pun">(</span><span class="lit">0</span><span class="pun">);</span><span class="pln">
</span><span class="com">//将图像写入文件</span><span class="pln">
</span><span class="typ">ImageIO</span><span class="pun">.</span><span class="pln">write</span><span class="pun">(</span><span class="pln">image</span><span class="pun">,</span><span class="pln"> </span><span class="str">"JPEG"</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">File</span><span class="pun">(</span><span class="str">"C:/PdfBox_Examples/myimage.jpg"</span><span class="pun">));</span><span class="pln">
</span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="str">"Image created"</span><span class="pun">);</span><span class="pln">
</span><span class="com">//Closing the document</span><span class="pln">
document</span><span class="pun">.</span><span class="pln">close</span><span class="pun">();</span><span class="pln">
}
}
使用以下命令从命令提示符处编译并执行保存的Java文件。
javac PdfToImage.java java PdfToImage
执行后,上述程序将在给定的PDF文档中检索显示以下消息的图像。
Image created
如果您验证了给定的路径,则可以观察到图像已生成并保存为 myimage.jpg ,如下所示。