PDFBox - 插入圖片



在上一章中,我們學習瞭如何從現有的PDF文件中提取文字。本章我們將討論如何向PDF文件中插入圖片。

向PDF文件插入圖片

您可以使用PDImageXObjectPDPageContentStream類的createFromFile()drawImage()方法將圖片插入PDF文件。

以下是從現有PDF文件中提取文字的步驟。

步驟1:載入現有PDF文件

使用PDDocument類的靜態方法load()載入現有PDF文件。此方法接受檔案物件作為引數,由於這是一個靜態方法,您可以使用類名呼叫它,如下所示。

File file = new File("path of the document")
PDDocument doc = PDDocument.load(file);

步驟2:檢索頁面

選擇PDF文件中的一個頁面,並使用getPage()方法檢索其頁面物件,如下所示。

PDPage page = doc.getPage(0);

步驟3:建立PDImageXObject物件

PDFBox庫中的PDImageXObject類表示一個圖片。它提供執行與圖片相關的操作所需的所有方法,例如插入圖片、設定高度、設定寬度等。

我們可以使用createFromFile()方法建立此類的物件。此方法需要您傳入要新增的圖片路徑(字串形式)和需要新增圖片的文件物件。

PDImageXObject pdImage = PDImageXObject.createFromFile("C:/logo.png", doc);

步驟4:準備內容流

您可以使用名為PDPageContentStream類的物件插入各種資料元素。您需要將文件物件和頁面物件傳遞給此類的建構函式,因此,透過傳遞在前面步驟中建立的這兩個物件來例項化此類,如下所示。

PDPageContentStream contentStream = new PDPageContentStream(doc, page);

步驟5:在PDF文件中繪製圖片

您可以使用drawImage()方法在PDF文件中插入圖片。對於此方法,您需要新增在上面步驟中建立的圖片物件以及圖片所需的尺寸(寬度和高度),如下所示。

contentstream.drawImage(pdImage, 70, 250);

步驟6:關閉PDPageContentStream

使用close()方法關閉PDPageContentStream物件,如下所示。

contentstream.close();

步驟7:儲存文件

新增所需內容後,使用PDDocument類的save()方法儲存PDF文件,如下面的程式碼塊所示。

doc.save("Path");

步驟8:關閉文件

最後,使用PDDocument類的close()方法關閉文件,如下所示。

doc.close();

示例

假設我們在路徑C:/PdfBox_Examples/下有一個名為sample.pdf的PDF文件,其中包含空白頁面,如下所示。

Sample document

此示例演示如何將圖片新增到上述PDF文件的空白頁面中。在這裡,我們將載入名為sample.pdf的PDF文件並向其中新增圖片。將此程式碼儲存在名為InsertingImage.java的檔案中。

import java.io.File;
  
import org.apache.pdfbox.pdmodel.PDDocument; 
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;

public class InsertingImage {

   public static void main(String args[]) throws Exception {
      //Loading an existing document
      File file = new File("C:/PdfBox_Examples/sample.pdf");
      PDDocument doc = PDDocument.load(file);
        
      //Retrieving the page
      PDPage page = doc.getPage(0);
       
      //Creating PDImageXObject object
      PDImageXObject pdImage = PDImageXObject.createFromFile("C:/PdfBox_Examples/logo.png",doc);
       
      //creating the PDPageContentStream object
      PDPageContentStream contents = new PDPageContentStream(doc, page);

      //Drawing the image in the PDF document
      contents.drawImage(pdImage, 70, 250);

      System.out.println("Image inserted");
      
      //Closing the PDPageContentStream object
      contents.close();		
		
      //Saving the document
      doc.save("C:/PdfBox_Examples/sample.pdf");
            
      //Closing the document
      doc.close();
     
   }
}

使用以下命令從命令提示符編譯並執行儲存的Java檔案。

javac InsertingImage.java 
java InsertingImage

執行後,上述程式會將圖片插入到給定PDF文件的指定頁面中,並顯示以下訊息。

Image inserted

如果您驗證sample.pdf文件,您可以觀察到其中插入了一張圖片,如下所示。

Inserting image
廣告
© . All rights reserved.