切换语言为:繁体

Java读取PDF页面内容、添加新页面、删除指定页

  • 爱糖宝
  • 2024-08-04
  • 2063
  • 0
  • 0

最近帮公司写了好多小脚本处理Excel和Pdf,在此记录一下,以备下次使用还能找得到如何实现的,开发过程中主要使用pdfbox实现PDF页面的添加删除操作,Maven依赖如下:

<dependency>
    <groupId>org.apache.pdfbox</groupId>
    <artifactId>pdfbox</artifactId>
    <version>2.0.24</version>
</dependency>

读取PDF页面内容实现步骤

  1. 读取PDF文件,创建文件输入流。

    String filePath = "D:\\Download\\test.pdf";
    FileInputStream fileInputStream = new FileInputStream(new File(filePath);
    PDDocument document = PDDocument.load(fileInputStream);

  2. 创建PDFTextStripper对象,读取页面的文本内容
    使用PDFTextStripper对象需要引入一个Maven依赖

    <dependency>
        <groupId>org.apache.pdfbox</groupId>
        <artifactId>fontbox</artifactId>
        <version>2.0.24</version>
    </dependency>

    创建PDFTextStripper对象,设置要读取第几页到第几页的文本内容,下面的示例中读取第一页的文本内容

    PDFTextStripper ps = new PDFTextStripper();
    ps.setStartPage(1);
    ps.setEndPage(1);
    String content = ps.getText(document);

添加新的PDF页面实现步骤

读取PDF文件,创建文件输入流不做演示,这里默认已经创建了文档对象PDDocument

  1. 加载字体对象
    因为内容需要指定字体,所以要创建一个字体对象PDType0Font

    PDType0Font font = PDType0Font.load(document, new File("D:\\Download\\ZiTiChuanQiNanAnTi-MianFeiShangYong-2.ttf"));

  2. 创建一个新的页面添加到document

    PDPage page = new PDPage();
    document.addPage(page);

  3. 创建一个PDF页面内容操作流,用来向页面上添加文本内容
    showText()用来在页面上添加文本内容,但是必须要在语句前后分别调用beginText()endText()方法,并且必须调用setFont()方法来设置内容的字体,否则运行会出错!

    PDPageContentStream contentStream=new PDPageContentStream(document, page);
    contentStream.beginText();
    contentStream.newLineAtOffset(25, 700);
    contentStream.setFont(font, 14);
    contentStream.showText("你好");
    contentStream.endText();
    contentStream.close();

  4. 保存PDF文档对象到指定文件

    document.save("D:\\Download\\newTest.pdf");

删除PDF指定页面实现步骤

删除文件比较简单,只需要调用document.removePage(index)方法,传入要删除的页码即可,删除后将document对象保存到指定文件。这里创建文件的步骤不做演示,这里就默认已经创建了文档对象PDDocument。

document.removePage(i);
document.save("D:\\Download\\newTest.pdf");

0条评论

您的电子邮件等信息不会被公开,以下所有项均必填

OK! You can skip this field.