在前一章中提供的範例中,學習了如何在PDF中向頁面新增文字,但通過此程式,只能新增適合單行的文字。 如果您嘗試新增更多內容,則不會顯示超出行間距的所有文字。
例如,如果傳遞以下字串在上一章中執行上述程式,則只會顯示其中的一部分。
String text = "This is an example of adding text to a page in the pdf document. we can
add as many lines as we want like this using the showText() method of the
ContentStream class";
用上面提到的字串替換上一章中例子的字串文字並執行它。 執行後,將得到類似以下輸出。
如果仔細觀察輸出,可以看到只顯示了一部分字串。
要將多行新增到PDF,需要使用setLeading()
方法設定前導,並在每行完成後使用newline()
方法切換到新行。
以下是建立空白文件並將多行文字內容新增到頁面的步驟。
第1步:載入現有文件
使用PDDocument
類的load()
方法載入現有文件。 因此,請範例化此類並載入所需的文件,如下所示。
File file = new File("Path of the document");
PDDocument doc = PDDocument.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步:設定文字引導
可以使用setLeading()
方法設定文字引導,如下所示。
contentStream.setLeading(14.5f);
第8步:使用newline()插入多個字串
使用PDPageContentStream
類的ShowText()
方法插入多個字串,方法是使用newline()
方法將每個字串分開,如下所示。
contentStream. ShowText(text1);
contentStream.newLine();
contentStream. ShowText(text2);
第9步:結束文字
插入文字後,需要使用PDPageContentStream類
的endText()
方法結束文字,如下所示。
contentStream.endText();
第10步:關閉PDPageContentStream
使用close()
方法關閉PDPageContentStream
物件,如下所示。
contentstream.close();
第11步:儲存文件
新增所需內容後,使用PDDocument
類的save()
方法儲存PDF文件,如以下程式碼塊中所示。
doc.save("Path");
第12步:關閉檔案
最後,使用PDDocument
類的close()
方法關閉文件,如下所示。
doc.close();
本範例演示如何使用PDFBox在PDF中新增多行。 此程式儲存在名稱為AddMultipleLines.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.PDFont;
import org.apache.pdfbox.pdmodel.font.PDType0Font;
import org.apache.pdfbox.pdmodel.font.PDType1Font;
public class AddMultipleLines {
public static void main(String args[]) throws IOException {
//Loading an existing document
File file = new File("F:/worksp/pdfbox/my_doc.pdf");
PDDocument doc = PDDocument.load(file);
//Creating a PDF Document
PDPage page = doc.getPage(1);
PDFont font = PDType0Font.load(doc, new File("c:/windows/fonts/times.ttf"));
PDPageContentStream contentStream = new PDPageContentStream(doc, page);
//Begin the Content stream
contentStream.beginText();
//Setting the font to the Content stream
contentStream.setFont( PDType1Font.TIMES_ROMAN, 16 );
System.out.println(" getName => "+font.getName());
// contentStream.setFont( font, 16 );
//Setting the leading
contentStream.setLeading(14.5f);
//Setting the position for the line
contentStream.newLineAtOffset(25, 725);
String text1 = "This is an example of adding text to a page in the pdf document. we can add as many lines";
String text2 = "as we want like this using the ShowText() method of the ContentStream class";
//Adding text in the form of string
contentStream.showText(text1);
contentStream.newLine();
contentStream.newLine();
contentStream.showText(text2);
contentStream.newLine();
//Ending the content stream
contentStream.endText();
System.out.println("Content added");
//Closing the content stream
contentStream.close();
//Saving the document
doc.save(new File("F:/worksp/pdfbox/new-mul-doc.pdf"));
//Closing the document
doc.close();
}
}
執行上面範例程式碼後,在指定路徑中開啟PDF文件:new-mul-doc.pdf,則可以觀察到給定內容以多行新增到文件中,如下所示。