Pdfbox 简明教程
PDFBox - Converting PDF To Image.
在之前的章节中,我们已经了解了如何合并多个 PDF 文档。在本节中,我们将了解如何从 PDF 文档的页面中提取图像。
Generating an Image from a PDF Document
PDFBox 库提供了一个名为 PDFRenderer 的类,该类将 PDF 文档呈现为 AWT BufferedImage。
以下是要从 PDF 文档中生成图像的步骤。
Step 1: Loading an Existing PDF Document
使用 PDDocument 类的静态方法 load() 加载现有 PDF 文档。此方法接受一个文件对象作为参数,因为这是一个静态方法,您可使用类名调用它,如下所示:
File file = new File("path of the document")
PDDocument document = PDDocument.load(file);
Step 2: Instantiating the PDFRenderer Class
名为 PDFRenderer 的类将 PDF 文档呈现为 AWT BufferedImage 。因此,您需要如下所示实例化此类。此类的构造函数接受一个文档对象;如以下所示传递先前步骤中创建的文档对象。
PDFRenderer renderer = new PDFRenderer(document);
Step 3: Rendering Image from the PDF Document
您可以使用 Renderer 类的 renderImage() 方法在特定页面中渲染图像,为此方法您需要传递要渲染的图像所在页面的索引。
BufferedImage image = renderer.renderImage(0);
Example
假设,我们在 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 ,如下所示。