📜  PDFBox提取图像

📅  最后修改于: 2021-01-07 07:44:49             🧑  作者: Mango

PDFBox提取图像

在本节中,我们将学习如何从现有的PDF文档中提取图像。 PDFBox库提供了PDFRender类,该类将PDF文档呈现到AWT BufferedImage中

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

加载现有的PDF文档

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

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

实例化PDFRender类

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

PDFRenderer renderer = new PDFRenderer(doc);

渲染图像

Renderer类的renderImage()方法可用于在特定页面中渲染图像。该方法需要传递页面的索引,在该索引中我们将呈现图像。

BufferedImage image = renderer.renderImage(Page Index);

将图像写入文件

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

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

可以在以下代码中显示:

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

关闭文件

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

doc.close();

例-

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

Java程序

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;

public class ExtractImage {
    
public static void main(String[] args)throws IOException {
                
        //Loading an existing document 
          File file = new File("/eclipse-workspace/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(2);

    //Writing the image to a file
     ImageIO.write(image, "JPEG", new File("/eclipse-workspace/my_image.jpeg"));
    
          System.out.println("Image created successfully.");
    
    //Closing the document
    doc.close();
    }
}

输出:

成功执行后,以上程序显示以下输出。

现在进行验证,如下图所示打开图像-