PDFBox - 将 PDF 转换为图像。
在上一章中,我们了解了如何合并多个 PDF 文档。在本章中,我们将了解如何从 PDF 文档的页面中提取图像。
从 PDF 文档生成图像
PDFBox 库提供了一个名为 PDFRenderer 的类,它可以将 PDF 文档渲染成 AWT BufferedImage。
以下是从 PDF 文档生成图像的步骤。
步骤 1:加载现有的 PDF 文档
使用 PDDocument 类的静态方法 load() 加载现有的 PDF 文档。此方法接受文件对象作为参数,由于这是一个静态方法,因此您可以使用类名调用它,如下所示。
File file = new File("path of the document") 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 文档第 1 页中的图像并将其保存为 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 { //Loading an existing PDF document File file = new File("C:/PdfBox_Examples/sample.pdf"); PDDocument document = PDDocument.load(file); //Instantiating the PDFRenderer class PDFRenderer renderer = new PDFRenderer(document); //Rendering an image from the PDF document BufferedImage image = renderer.renderImage(0); //Writing the image to a file ImageIO.write(image, "JPEG", new File("C:/PdfBox_Examples/myimage.jpg")); System.out.println("Image created"); //Closing the document document.close(); } }
使用以下命令从命令提示符编译并执行保存的 Java 文件。
javac PdfToImage.java java PdfToImage
执行后,上述程序将检索给定 PDF 文档中的图像,并显示以下消息。
Image created
如果您验证给定的路径,您可以观察到图像已生成并保存为 myimage.jpg,如下所示。
广告