在前一章中,我們討論了如何將頁面新增到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
,則可以觀察到給定內容已新增到文件中,如下所示。