Java使用PDFBox将一个 PDF 文档拆分为多个 PDF

要将一个 PDF 文档拆分为多个 PDF 文档,您可以使用 PDFBox Java API 的 Splitter.split() 方法。

在本教程中,我们将学习使用示例 Java 程序拆分 PDF 文档。

PDFBox 示例 1 - 将 PDF 拆分为多个 PDF

在此示例中,我们将采用多页 PDF,并将此 PDF 文档拆分为多个 PDF,其中每个生成的 PDF 文档仅包含源文档中的一页。

SplitPDFExample.java

import org.apache.pdfbox.multipdf.Splitter;
import org.apache.pdfbox.pdmodel.PDDocument;
 
import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.Iterator;
 
public class SplitPDFExample {
 
    public static void main(String[] args) throws IOException {
          File file = new File("/home/tk/sample_pdf.pdf");
           
          // load pdf file
          PDDocument document = PDDocument.load(file);
 
          // instantiating Splitter
          Splitter splitter = new Splitter();
           
          // split the pages of a PDF document
          List<PDDocument> Pages = splitter.split(document);
 
          // Creating an iterator
          Iterator<PDDocument> iterator = Pages.listIterator();
 
          // saving splits as pdf
          int i = 0;
          while(iterator.hasNext()) {
             PDDocument pd = iterator.next();
             // provide destination path to the PDF split
             pd.save("/home/tk/pdfs/sample_part_"+ ++i +".pdf");
             System.out.println("Saved /home/tk/pdfs/sample_part_"+ i +".pdf");
          }
          System.out.println("Provided PDF has been split into multiple.");
          document.close();
    }
 
}

输出

Saved /home/tk/pdfs/sample_part_1.pdf
Saved /home/tk/pdfs/sample_part_2.pdf
Saved /home/tk/pdfs/sample_part_3.pdf
Saved /home/tk/pdfs/sample_part_4.pdf
Saved /home/tk/pdfs/sample_part_5.pdf
Saved /home/tk/pdfs/sample_part_6.pdf
Provided PDF has been split into multiple.

PDFBox 示例 2 - 以指定间隔拆分 PDF

以下是将 PDF 文档拆分为多个 PDF 文档的分步指南,这些文档已在源文档中以特定间隔拆分。

SplitPDFAtPageExample.java

import org.apache.pdfbox.multipdf.Splitter;
import org.apache.pdfbox.pdmodel.PDDocument;
 
import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.Iterator;
 
public class SplitPDFAtPageExample {
 
    public static void main(String[] args) throws IOException {
          File file = new File("/home/tk/sample_pdf.pdf");
           
          // load pdf file
          PDDocument document = PDDocument.load(file);
 
          // instantiating Splitter
          Splitter splitter = new Splitter();
           
          splitter.setSplitAtPage(2);
           
          // split the pages of a PDF document
          List<PDDocument> Pages = splitter.split(document);
 
          // Creating an iterator
          Iterator<PDDocument> iterator = Pages.listIterator();
 
          // saving splits as pdf
          int i = 0;
          while(iterator.hasNext()) {
             PDDocument pd = iterator.next();
             pd.save("/home/tk/pdfs/sample_part_"+ ++i +".pdf");
             System.out.println("Saved /home/tk/pdfs/sample_part_"+ i +".pdf");
          }
           
          // close the document
          document.close();
    }
 
}

输出

Saved /home/tk/pdfs/sample_part_1.pdf
Saved /home/tk/pdfs/sample_part_2.pdf
Saved /home/tk/pdfs/sample_part_3.pdf

默认情况下,splitAtPage 设置为 1。

结论

在本PDFBox 教程中,我们学习了将 PDF 文档拆分为多个 PDF。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 JavaPDFBox 库可以将一页 PDF 左右平均切割为两页。下面是一个简单的示例代码: ```java import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.common.PDRectangle; import org.apache.pdfbox.pdmodel.PDPage; import org.apache.pdfbox.pdmodel.PDPageTree; import java.io.IOException; public class PDFSplitter { public static void main(String[] args) { try { // 加载 PDF 文档 PDDocument document = PDDocument.load("input.pdf"); // 获取第一页 PDPage firstPage = document.getPage(0); // 获取第一页的宽度和高度 float pageWidth = firstPage.getMediaBox().getWidth(); float pageHeight = firstPage.getMediaBox().getHeight(); // 创建新的两页并设置宽度和高度 PDPage newPage1 = new PDPage(new PDRectangle(pageWidth / 2, pageHeight)); PDPage newPage2 = new PDPage(new PDRectangle(pageWidth / 2, pageHeight)); // 创建页面树对象 PDPageTree pageTree = document.getDocumentCatalog().getPages(); // 将新的两页添加到页面树中 pageTree.insertAfter(newPage1, firstPage); pageTree.insertAfter(newPage2, newPage1); // 保存切割后的 PDF document.save("output.pdf"); // 关闭文档 document.close(); System.out.println("PDF 切割完成。"); } catch (IOException e) { e.printStackTrace(); } } } ``` 上述代码将 PDF 文档加载后,获取第一页的宽度和高度,并根据宽度的一半创建两个新的 PDPage 对象。然后,将这两个新的页面插入到页面树中,保存为新的 PDF 文档。最后关闭文档。执行该代码后,会生成一个名为 "output.pdf" 的新 PDF 文件,其中第一页是原始第一页的左半部分,第二页是原始第一页的右半部分。 请注意,你需要提前导入 PDFBox 库以及相关的依赖。这个示例仅供参考,你可能需要根据自己的需求进行修改和完善。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值