2012-06-27 2 views
4

Я пишу простое приложение Java с Apache PDFBox. У меня есть несколько PDF-файлов, где последняя страница является индексом содержимого на предыдущих страницах.Apache PDFBox: переместить последнюю страницу на первую страницу.

Мне нужен индекс (последняя страница), который стал первой страницей PDF-файла.

Возможно ли это?

Я также обнаружил http://itextpdf.com/ библиотеку, звук лучше, чем Apache PDFBox, но в данном случае я не знаю, могу ли я делать то, что мне нужно либо

Или, может быть, я могу использовать это: http://saaspose.com/docs/display/pdf/How+to+Move+Page+within+a+Pdf+Document+%28Java+SDK%29

ответ

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 
1

Я пользуюсь 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; 
} 
+1

Текущие версии PDFBox - 1.8.13 и 2.0.7. –

+0

особенно необходимо при использовании ** boxable **, библиотеки для создания таблиц в PDF-документах. См. [Link] (https://github.com/dhorions/boxable) – roz

Смежные вопросы