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,如下所示。
廣告