Pdfbox 简明教程
PDFBox - Adding Text
在上一个章节中,我们讨论了如何向 PDF 文档添加页面。在本章节中,我们将讨论如何向现有 PDF 文档添加文本。
Adding Text to an Existing PDF Document
您可以使用 PDFBox 库向文档添加内容,这为您提供了名为 PDPageContentStream 的类,其中包含在 PDF 文档页面中插入文本、图片和其他类型内容的必要方法。
以下是创建空白文档并在其中向页面添加内容的步骤。
Step 1: Loading an Existing Document
您可以使用 PDDocument 类的 load() 方法加载现有文档。因此,实例化此类并按如下所示加载所需文档。
File file = new File("Path of the document");
PDDocument doc = document.load(file);
Step 2: Getting the Required Page
您可以使用 getPage() 方法获取文档中所需的页面。按如下所示将索引传递给此方法来检索所需页面的对象。
PDPage page = doc.getPage(1);
Step 3: Preparing the Content Stream
您可以使用类 PDPageContentStream 的对象插入多种数据元素。您需要将文档对象和页面对象传递给这个类的构造函数,因此,实例化这个类需要传递前面步骤创建的这两个对象,如下所示。
PDPageContentStream contentStream = new PDPageContentStream(doc, page);
Step 4: Beginning the Text
在向 PDF 文档插入文本时,您可以使用 PDPageContentStream 类中的 beginText() 和 endText() 方法指定文本的起始点和结束点,如下所示。
contentStream.beginText();
………………………..
code to add text content
………………………..
contentStream.endText();
因此,按如下所示使用 beginText() 方法开始文本。
contentStream.beginText();
Step 5: Setting the Position of the Text
通过使用 newLineAtOffset() 方法,您可以在页面中的内容流上设置位置。
//Setting the position for the line
contentStream.newLineAtOffset(25, 700);
Step 6: Setting the Font
您可以使用 PDPageContentStream 类的 setFont() 方法将文本字体设置为所需的样式,如下所示。您需要向此方法传递字体类型和大小。
contentStream.setFont( font_type, font_size );
Step 7: Inserting the Text
您可以使用 PDPageContentStream 类的 ShowText() 方法将文本插入到页面中,如下所示。该方法以字符串的形式接受所需的文本。
contentStream.showText(text);
Step 8: Ending the Text
插入文本后,您需要使用 PDPageContentStream 类的 endText() 方法结束文本,如下所示。
contentStream.endText();
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 ,您可以观察到给定的内容已添加到文档中,如下所示。