PDFBox - 将 PDF 转换为图像
在上一章中,我们了解了如何合并多个 PDF 文档。在本章中,我们将了解如何从 PDF 文档的一页中提取图像。
从 PDF 文档生成图像
PDFBox 库为您提供了一个名为 PDFRenderer 的类,它将 PDF 文档渲染为 AWT BufferedImage。
以下是从 PDF 文档生成图像的步骤。
步骤 1:加载现有 PDF 文档
使用 PDDocument 类的静态方法 load() 加载现有 PDF 文档。此方法接受文件对象作为参数,因为这是一个静态方法,您可以使用类名调用它,如下所示。
File file = new File("文档路径") PDDocument document = PDDocument.load(file);
步骤 2:实例化 PDFRenderer 类
名为 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();
示例
假设,我们在路径 C:\PdfBox_Examples\ 中有一个 PDF 文档 — sample.pdf,其第一页包含一张图片,如下所示。

此示例演示如何将上述 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 { //加载现有 PDF 文档 File file = new File("C:/PdfBox_Examples/sample.pdf"); PDDocument document = PDDocument.load(file); //实例化 PDFRenderer 类 PDFRenderer renderer = new PDFRenderer(document); //从 PDF 文档渲染图像 BufferedImage image = renderer.renderImage(0); //将图像写入文件 ImageIO.write(image, "JPEG", new File("C:/PdfBox_Examples/myimage.jpg")); System.out.println("Image created"); //关闭文档 document.close(); } }
使用以下命令从命令提示符编译并执行已保存的 Java 文件。
javac PdfToImage.java java PdfToImage
执行后,上述程序将检索给定 PDF 文档中的图像,并显示以下消息。
Image created
如果验证给定的路径,您可以观察到图像已生成并保存为 myimage.jpg,如下所示。
