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 tw511.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,則可以觀察到給定內容已新增到文件中,如下所示。