添加文本(Adding Text)
在上一章中,我们讨论了如何将页面添加到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
使用close()方法关闭PDPageContentStream对象,如下所示。
contentstream.close();
第10步:保存文档
添加所需内容后,使用PDDocument类的save()方法保存PDF文档,如以下代码块所示。
doc.save("Path");
第11步:关闭文档
最后,使用PDDocument类的close()方法关闭文档,如下所示。
doc.close();
例子 (Example)
此示例演示如何将内容添加到文档中的页面。 在这里,我们将创建一个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 ,则可以观察到给定内容已添加到文档中,如下所示。