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