PDFBox 读取PDF中的图片

在本节中,我们将学习如何从现有 PDF 文档中提取图片。在PDFBox的库提供了一个PDFRender类用于读取一个PDF文档成为AWT BufferedImage。

按照以下步骤从现有的 PDF 文档中提取图片

PDFBox 加载现有的 PDF 文档

我们可以使用static load()方法加载现有的PDF文档。此方法接受一个文件对象作为参数。我们还可以使用PDFBox的类名PDDocument调用它。

File file = new File("Path of Document");   
PDDocument doc = PDDocument.load(file);   

PDFBox 实例化 PDFRender 类

PDFRenderer类将 PDF 文档读取为AWT BufferedImage。此类的实例需要一个文档对象作为其参数。这可以在以下代码中显示。

PDFRenderer renderer = new PDFRenderer(doc);  

PDFBox 渲染图像

Renderer类的 renderImage()方法 可用于渲染特定页面中的图片。这个方法需要传递到带有我们需要渲染图片的页面。

BufferedImage image = renderer.renderImage(Page Index);  

PDFBox 将图像写入文件

我们可以使用write()方法将渲染的图像写入文件。在这个方法中,我们需要传递三个参数

  1. 渲染的图像对象。
  2. 表示图像类型的字符串(jpg 或 png)。
  3. 我们需要将提取的图像保存到的文件对象。

如以下代码所示:

ImageIO.write(image, "JPEG", new File("Path of Image"));  

PDFBox 关闭文档

完成任务后,我们需要使用close()方法关闭PDDocument类对象。

doc.close();  

PDFBox 读取PDF中的图片 完整示例

这是一个 PDF 文档,我们将使用 Java 程序的 PDFBox 库将其页面提取为图像。

代码如下:

package com.yiidian;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

public class ExtractImage {

    public static void main(String[] args) throws IOException {

        //Loading an existing document   
        File file = new File("d:/blank.pdf");
        PDDocument doc = PDDocument.load(file);

        //Instantiating the PDFRenderer class
        PDFRenderer renderer = new PDFRenderer(doc);

        //Rendering an image from the PDF document
        BufferedImage image = renderer.renderImage(0);

        //Writing the image to a file
        ImageIO.write(image, "JPEG", new File("d:/hello.png"));

        System.out.println("Image created successfully.");

        //Closing the document
        doc.close();
    }
}  

执行完以上代码,在D盘下会产生hello.png文件,打开显示效果如下:

热门文章

优秀文章