在上一章中,无涯教程讨论了如何将页面添加到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 - 关闭流
如下所示,使用 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 {
</span><span class="com">//加载现有文档</span><span class="pln">
</span><span class="typ">File</span><span class="pln"> file </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">File</span><span class="pun">(</span><span class="str">"C:/PdfBox_Examples/my_doc.pdf"</span><span class="pun">);</span><span class="pln">
</span><span class="typ">PDDocument</span><span class="pln"> document </span><span class="pun">=</span><span class="pln"> </span><span class="typ">PDDocument</span><span class="pun">.</span><span class="pln">load</span><span class="pun">(</span><span class="pln">file</span><span class="pun">);</span><span class="pln">
</span><span class="com">//检索文档的页面</span><span class="pln">
</span><span class="typ">PDPage</span><span class="pln"> page </span><span class="pun">=</span><span class="pln"> document</span><span class="pun">.</span><span class="pln">getPage</span><span class="pun">(</span><span class="lit">1</span><span class="pun">);</span><span class="pln">
</span><span class="typ">PDPageContentStream</span><span class="pln"> contentStream </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">PDPageContentStream</span><span class="pun">(</span><span class="pln">document</span><span class="pun">,</span><span class="pln"> page</span><span class="pun">);</span><span class="pln">
</span><span class="com">//开始内容流</span><span class="pln">
contentStream</span><span class="pun">.</span><span class="pln">beginText</span><span class="pun">();</span><span class="pln">
</span><span class="com">//将字体设置为内容流</span><span class="pln">
contentStream</span><span class="pun">.</span><span class="pln">setFont</span><span class="pun">(</span><span class="typ">PDType1Font</span><span class="pun">.</span><span class="pln">TIMES_ROMAN</span><span class="pun">,</span><span class="pln"> </span><span class="lit">12</span><span class="pun">);</span><span class="pln">
</span><span class="com">//设置线的位置</span><span class="pln">
contentStream</span><span class="pun">.</span><span class="pln">newLineAtOffset</span><span class="pun">(</span><span class="lit">25</span><span class="pun">,</span><span class="pln"> </span><span class="lit">500</span><span class="pun">);</span><span class="pln">
</span><span class="typ">String</span><span class="pln"> text </span><span class="pun">=</span><span class="pln"> </span><span class="str">"This is the sample document and we are adding content to it."</span><span class="pun">;</span><span class="pln">
</span><span class="com">//以字符串形式添加文本 </span><span class="pln">
contentStream</span><span class="pun">.</span><span class="pln">showText</span><span class="pun">(</span><span class="pln">text</span><span class="pun">);</span><span class="pln">
</span><span class="com">//结束内容流</span><span class="pln">
contentStream</span><span class="pun">.</span><span class="pln">endText</span><span class="pun">();</span><span class="pln">
</span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="str">"Content added"</span><span class="pun">);</span><span class="pln">
</span><span class="com">//关闭内容流</span><span class="pln">
contentStream</span><span class="pun">.</span><span class="pln">close</span><span class="pun">();</span><span class="pln">
</span><span class="com">//保存文档</span><span class="pln">
document</span><span class="pun">.</span><span class="pln">save</span><span class="pun">(</span><span class="kwd">new</span><span class="pln"> </span><span class="typ">File</span><span class="pun">(</span><span class="str">"C:/PdfBox_Examples/new.pdf"</span><span class="pun">));</span><span class="pln">
</span><span class="com">//关闭文档</span><span class="pln">
document</span><span class="pun">.</span><span class="pln">close</span><span class="pun">();</span><span class="pln">
}
}
使用以下命令从命令提示符处编译并执行保存的Java文件。
javac AddingContent.java java AddingContent
执行后,上述程序将给定的文本添加到文档中并显示以下消息。
Content added
如果您在指定路径中验证PDF文档 new.pdf ,则可以看到给定内容已添加到文档中,如下所示。