【问题标题】:How do I save all the pages of a PDDocument in seperate .pdf files?如何将 PDF 文档的所有页面保存在单独的 .pdf 文件中?
【发布时间】:2019-02-25 09:15:08
【问题描述】:

我想将 PDDocument 的所有页面保存在单独的 pdf 文件中。 我是这样编程的:

int numberOfPages = pdDocument.getNumberOfPages();
for (int i = 0; i < numberOfPages; i++) {
    PDDocument pageDocument = new PDDocument();
    PDPage page = pdDocument.getPage(i);
    pageDocument.add(page);
    pageDocument.save("c:\temp\page" + (i+1));
}

这是正确的方法吗?我是否必须每次都创建一个新的 PDDocument 并将页面添加到其中,或者是否有更好的方法来单独保存 PDDocument 的页面?

为了更清楚: 我想将 PDDocument 中的每一页保存在单独的 pdf 中。 因此,如果我有一个包含 25 页的 PDDocument,我想将每一页保存在单独的 pdf 中。
像这样:
-page1.pdf
-page2.pdf
-page3.pdf
...
-page25.pdf

我只是想知道是否必须为每个页面创建一个新的 PDDocument 对象才能将其保存为 pdf。

【问题讨论】:

  • 这是矛盾的。您要保存 PDDocument 中的所有页面还是(不同)PDDocument 中的所有页面?

标签: java pdfbox


【解决方案1】:

请尝试(未经测试):

PDDocument pageDocument = new PDDocument();
for (int i = 0; i < pdDocument.getNumberOfPages(); i++) {
    pageDocument.add(pdDocument.getPage(i));
}
pageDocument.save("c:\temp\page");

应该可以将多个页面添加到 PDDocument。

【讨论】:

  • 这没有回答问题。如果这样可行,它不是简单地复制文档而不是每页拆分吗?
  • 是的,但您不想将所有页面保存在一个文件中吗?对不起,那我不明白你的意思。
【解决方案2】:

使用 splitter 将 PDDocument 拆分成单独的 PDDocument,简单示例即可

Splitter splitter = new Splitter();
splitter.setStartPage(start); //page to start from
splitter.setEndPage(end); //page to end at
List<PDDocument> splittedItems = splitter.split(doc); //doc is original document
for(int index = 0; index < splittedItem.length(); index++){
    splittedItem[index].save("destination to save");
}

在你的情况下,

  int numberOfPages = pdDocument.getNumberOfPages();
  Splitter splitter = new Splitter();
  splitter.setStartPage(1);
  splitter.setEndPage(numberOfPages); //page to end at
  List<PDDocument> splittedItems = splitter.split(pdDocument); 
    for(int index = 0; index < splittedItem.length(); index++){
        splittedItem[index].save("c:\temp\page" + (index+1));
    }

有关更多信息,您可以查看文档 https://pdfbox.apache.org/docs/2.0.3/javadocs/org/apache/pdfbox/multipdf/Splitter.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-14
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-14
    • 2014-05-16
    相关资源
    最近更新 更多