PDFBox - 添加文本

PDFBox - 添加文本 首页 / PDFbox入门教程 / PDFBox - 添加文本

在上一章中,无涯教程讨论了如何将页面添加到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 {

      //加载现有文档
      File file = new File("C:/PdfBox_Examples/my_doc.pdf");
      PDDocument document = PDDocument.load(file);
       
      //检索文档的页面
      PDPage page = document.getPage(1);
      PDPageContentStream contentStream = new PDPageContentStream(document, page);
      
      //开始内容流
      contentStream.beginText(); 
       
      //将字体设置为内容流
      contentStream.setFont(PDType1Font.TIMES_ROMAN, 12);

      //设置线的位置
      contentStream.newLineAtOffset(25, 500);

      String text = "This is the sample document and we are adding content to it.";

      //以字符串形式添加文本 
      contentStream.showText(text);      

      //结束内容流
      contentStream.endText();

      System.out.println("Content added");

      //关闭内容流
      contentStream.close();

      //保存文档
      document.save(new File("C:/PdfBox_Examples/new.pdf"));

      //关闭文档
      document.close();
   }
}

使用以下命令从命令提示符处编译并执行保存的Java文件。

javac AddingContent.java 
java AddingContent 

执行后,上述程序将给定的文本添加到文档中并显示以下消息。

Content added

如果您在指定路径中验证PDF文档 new.pdf ,则可以看到给定内容已添加到文档中,如下所示。

Adding text

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

从0开始做增长 -〔刘津〕

许式伟的架构课 -〔许式伟〕

SQL必知必会 -〔陈旸〕

研发效率破局之道 -〔葛俊〕

动态规划面试宝典 -〔卢誉声〕

深度学习推荐系统实战 -〔王喆〕

零基础入门Spark -〔吴磊〕

郭东白的架构课 -〔郭东白〕

云原生架构与GitOps实战 -〔王炜〕

好记忆不如烂笔头。留下您的足迹吧 :)