PDFBox添加文檔

在前一章中,我們討論瞭如何將頁面添加到PDF文檔。 在本章中,我們將討論如何將文本添加到現有的PDF文檔。

將文本添加到現有的PDF文檔

可以使用PDFBox庫將內容添加到文檔,它提供一個名稱爲PDPageContentStream的類,其中包含在PDFDocument的頁面中插入文本,圖像和其他類型內容所需的方法。

以下是創建空白文檔並將內容添加到其中的頁面的步驟。

第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

使用PDPageContentStream類的close()方法關閉對象,如下所示。

contentstream.close();

第10步:保存文檔

添加所需內容後,使用PDDocument類的save()方法保存PDF文檔,如以下代碼塊中所示。

doc.save("Path");

步驟11:關閉文件

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

doc.close();

示例

本示例演示如何將內容添加到文檔中的頁面。 在這裏將創建一個Java程序來加載保存在F:\worksp\pdfbox目錄中的my_doc.pdf的PDF文檔,併爲其添加一些文本。 將此代碼保存在AddingContent.java 的文件中。

package com.yiibai;

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("F:\\worksp\\pdfbox\\my_doc.pdf");
      PDDocument document = PDDocument.load(file);

      //Retrieving the pages of the document 
      PDPage page = document.getPage(0);
      PDPageContentStream contentStream = new PDPageContentStream(document, page);

      //Begin the Content stream 
      contentStream.beginText(); 
      // contentStream.set
      //Setting the font to the Content stream  
      contentStream.setFont(PDType1Font.HELVETICA_BOLD, 14);

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

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

      //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("F:\\worksp\\pdfbox\\new-doc-text.pdf"));

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

執行上面示例代碼後,在指定路徑中找到並打開PDF文檔:new-doc-text.pdf,則可以觀察到給定內容已添加到文檔中,如下所示。
PDFBox添加文檔