PDFBox提取图像
在前一章中,我们已经看到了如何合并多个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("D:/PdfBoxExamples/myimage.jpg"));
第5步:关闭文档
最后,使用PDDocument
类的close()
方法关闭文档,如下所示。
document.close();
示例
假设,在目录:F:\worksp\pdfbox
中有一个PDF文档 - mypdf.pdf
,并且在其第一页中包含一个图像,如下所示。
本示例演示如何将上述PDF文档转换为图像文件。 在这里,将检索PDF文档第一页中的图像并将其保存为myimage.jpg
。 将此代码保存为PdfToImage.java
-
package com.zyiz; 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("F:/worksp/pdfbox/mypdf.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("F:/worksp/pdfbox/myimage.jpg")); System.out.println("Image created"); //Closing the document document.close(); } }
执行时,上述程序将检索给定PDF文档中的图像,并显示以下消息。
Image created
如果打开F:/worksp/pdfbox/,可以观察到图像文件:myimage.jpg
,打开后如下所示。
上一篇:PDFBox合并多个PDF文档
下一篇:PDFBox添加矩形
- Java教程
- Vim教程
- Swing教程
- Spring教程
- Spring Web Services教程
- Spring MVC教程
- Spring JDBC教程
- Spring Cloud教程
- Spring Boot教程
- Spring Boot CLI教程
- Spring Batch教程
- Spring AOP教程
- PDFBox教程
- JSP教程
- JSF教程
- JPA教程
- Java面向对象设计
- Java设计模式
- Java虚拟机教程
- Java泛型教程
- Java正则表达式教程
- Java数据类型教程
- Java并发编程教程
- Java密码学教程
- Java多线程教程
- Java国际化(i18n)教程
- JavaFX教程
- Java9教程
扫描二维码
程序员编程王