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
,則可以觀察到給定內容已添加到文檔中,如下所示。