【问题标题】:Apache PDFBox: Move the last page to first PageApache PDFBox:将最后一页移动到第一页
【发布时间】:2012-06-28 19:38:36
【问题描述】:

我正在使用 Apache PDFBox 编写一个简单的 Java 应用程序。 我有几个 PDF,其中最后一页是前几页内容的索引。

我需要将索引(最后一页)变成 PDF 文件的第一页。

有可能吗?

我还发现了听起来比 Apache PDFBox 更好的 http://itextpdf.com/ 库,但在这种情况下,我不知道我是否能做我需要的事情

或者我可以使用这个:http://saaspose.com/docs/display/pdf/How+to+Move+Page+within+a+Pdf+Document+%28Java+SDK%29

【问题讨论】:

    标签: java apache pdf


    【解决方案1】:

    使用 PDFBox,您可以将原始 PDF 打开为 PDDocument,然后使用 getDocumentCatalog().getAllPages() 获取页面列表。按照您想要的顺序重新排列列表,并将每一页写到新文档中。

            PDDocument newDoc = new PDDocument();
            PDDocument oldDoc = PDDocument.load (args[0]);
            List allPages = oldDoc.getDocumentCatalog().getAllPages();
    
            // Code to rearrange the list goes here
    
            for ( int curPageCnt = 0; curPageCnt < allPages.size(); curPageCnt++ )
            {
                newDoc.addPage( ( PDPage )allPages.get ( curPageCnt ) );
            } // end for
    

    【讨论】:

      【解决方案2】:

      我使用的是 PDFBox 2.0.0 版。以下是我将最后一页移动到第一个位置的方法:

      public static PDDocument moveLastPageToFirst(PDDocument documentToRearrangePages) {
          PDPageTree allPages = documentToRearrangePages.getDocumentCatalog().getPages();
          if (allPages.getCount() > 1) {
              PDPage lastPage = allPages.get(allPages.getCount() - 1);
              allPages.remove(allPages.getCount() - 1);
              PDPage firstPage = allPages.get(0);
              allPages.insertBefore(lastPage, firstPage);
          }
          return documentToRearrangePages;
      }
      

      【讨论】:

      • 当前 PDFBox 版本为 1.8.13 和 2.0.7。
      • 在使用 boxable 库以在 PDF 文档中构建表格时特别需要。参考link
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多