4

我正在用 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

4

2 回答 2

5

使用 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
于 2012-07-09T16:07:46.563 回答
4

我正在使用 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;
}
于 2017-08-15T18:02:49.683 回答