PDFBox - 新增文字



在上一章中,我們討論瞭如何向 PDF 文件新增頁面。在本章中,我們將討論如何向現有的 PDF 文件新增文字。

向現有 PDF 文件新增文字

您可以使用 PDFBox 庫向文件新增內容,它提供了一個名為 PDPageContentStream 的類,其中包含插入文字、影像和其他型別內容到 PDF 文件頁面所需的必要方法。

以下是建立空文件並在其中向頁面新增內容的步驟。

步驟 1:載入現有文件

您可以使用 PDDocument 類的 load() 方法載入現有文件。因此,例項化此類並載入所需的文件,如下所示。

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

步驟 2:獲取所需的頁面

您可以使用 getPage() 方法獲取文件中的所需頁面。透過將頁面的索引傳遞給此方法,檢索所需頁面的物件,如下所示。

PDPage page = doc.getPage(1);

步驟 3:準備內容流

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

PDPageContentStream contentStream = new PDPageContentStream(doc, page);

步驟 4:開始文字

在 PDF 文件中插入文字時,您可以使用 PDPageContentStream 類的 beginText() 和 endText() 方法指定文字的起始和結束點,如下所示。

contentStream.beginText(); 
……………………….. 
code to add text content 
……………………….. 
contentStream.endText();

因此,使用 beginText() 方法開始文字,如下所示。

contentStream.beginText();

步驟 5:設定文字的位置

使用 newLineAtOffset() 方法,您可以在頁面上的內容流中設定位置。

//Setting the position for the line 
contentStream.newLineAtOffset(25, 700);

步驟 6:設定字型

您可以使用 PDPageContentStream 類的 setFont() 方法將文字的字型設定為所需的樣式,如下所示。您需要將字型型別和大小傳遞給此方法。

contentStream.setFont( font_type, font_size );

步驟 7:插入文字

您可以使用 PDPageContentStream 類的 ShowText() 方法將文字插入頁面,如下所示。此方法接受以字串形式表示的所需文字。

contentStream.showText(text);

步驟 8:結束文字

插入文字後,您需要使用 PDPageContentStream 類的 endText() 方法結束文字,如下所示。

contentStream.endText();

步驟 9:關閉 PDPageContentStream

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

contentstream.close();

步驟 10:儲存文件

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

doc.save("Path");

步驟 11:關閉文件

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

doc.close();

示例

此示例演示瞭如何在文件的頁面中新增內容。在這裡,我們將建立一個 Java 程式來載入名為 my_doc.pdf 的 PDF 文件(儲存在 C:/PdfBox_Examples/ 路徑下),並向其中新增一些文字。將此程式碼儲存在名為 AddingContent.java 的檔案中。

import java.io.File; 
import java.io.IOException;
  
import org.apache.pdfbox.pdmodel.PDDocument; 
import org.apache.pdfbox.pdmodel.PDPage; 
import org.apache.pdfbox.pdmodel.PDPageContentStream; 
import org.apache.pdfbox.pdmodel.font.PDType1Font;
  
public class AddingContent {
   public static void main (String args[]) throws IOException {

      //Loading an existing document
      File file = new File("C:/PdfBox_Examples/my_doc.pdf");
      PDDocument document = PDDocument.load(file);
       
      //Retrieving the pages of the document 
      PDPage page = document.getPage(1);
      PDPageContentStream contentStream = new PDPageContentStream(document, page);
      
      //Begin the Content stream 
      contentStream.beginText(); 
       
      //Setting the font to the Content stream  
      contentStream.setFont(PDType1Font.TIMES_ROMAN, 12);

      //Setting the position for the line 
      contentStream.newLineAtOffset(25, 500);

      String text = "This is the sample document and we are adding content to it.";

      //Adding text in the form of string 
      contentStream.showText(text);      

      //Ending the content stream
      contentStream.endText();

      System.out.println("Content added");

      //Closing the content stream
      contentStream.close();

      //Saving the document
      document.save(new File("C:/PdfBox_Examples/new.pdf"));

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

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

javac AddingContent.java 
java AddingContent 

執行後,上述程式將給定的文字新增到文件中,並顯示以下訊息。

Content added

如果在指定的路徑中驗證 PDF 文件 new.pdf,您可以觀察到給定的內容已新增到文件中,如下所示。

Adding text
廣告

© . All rights reserved.