回答
拉爾斯·沃格爾使用the following code:
PdfReader reader = new PdfReader(INPUTFILE);
int n = reader.getNumberOfPages();
我會感到驚訝,如果getNumberOfPages
實現是慢比任何其他解決方案。
科F.3.3說有一個叫N
描述的頭字段如下:
N integer (Required) The number of pages in the document.
是的,我知道這是我的代碼。但是,這段代碼是否必須掃描完整的pdf,或者如果您只閱讀pdf的標題,它們是否會變得更簡單? – 2011-05-17 06:32:16
讓我試着找出... – aioobe 2011-05-17 06:36:03
PdfReader document = new PdfReader(new FileInputStream(new File("filename")));
int noPages = document.getNumberOfPages();
PdfReader document = new PdfReader(new FileInputStream(new File("filename")));
int noPages = document.getNumberOfPages();
以上是用於計算PDF頁面
哪個庫? – Jaydev 2016-05-25 08:15:02
你只是過程需要閱讀頁面樹(Catalog,Pages,Kids)並統計頁面條目。
其實,你只需要根頁面對象,並得到它/計數。 – 2011-05-17 20:39:52
這是正確的。 iText在打開時會解析相當多的PDF(它不會讀取流對象的內容,但僅此而已)...
除非您使用PdfReader(RandomAccessFileOrArray)
構造函數,否則它只會讀取外部參照(通常是必需的),但不解析任何東西,直到你開始請求特定對象(直接或通過各種調用)。
我寫的第一個PDF程序就是這樣做的。它打開了一份PDF文件,只做最低限度的工作量,閱讀頁數。它甚至沒有解析它不需要的外部參照。有沒有想過在多年的那個節目...
因此,雖然不是完全有效的,它會大大更高效使用RandomAccessFileOrArray:
int efficientPDFPageCount(String path) {
RandomAccessFileOrArray file = new RandomAccessFileOrArray(path, false, true);
PdfReader reader = new PdfReader(file);
int ret = reader.getNumberOfPages();
reader.close();
return ret;
}
更新:
對itext API進行了一些修改。現在(在版本5.4.x版本)使用它是通過java.io.RandomAccessFile中的正確方式:
int efficientPDFPageCount(File file) {
RandomAccessFile raf = new RandomAccessFile(file, "r");
RandomAccessFileOrArray pdfFile = new RandomAccessFileOrArray(
new RandomAccessSourceFactory().createSource(raf));
PdfReader reader = new PdfReader(pdfFile, new byte[0]);
int pages = reader.getNumberOfPages();
reader.close();
return pages;
}
不應該調用raf.close()來釋放資源嗎? – 2017-12-05 16:08:00
- 1. 用於PDF頁面拆分的Java庫
- 2. PDF頁面的縮略圖(Java)
- 3. 如何使用iText製作多個頁面的PDF Java
- 4. 如何使用iText&飛碟將java頁面的url轉換爲java中的pdf?
- 5. 如何使用perl(CAM :: PDF,PDF :: API2)來移動PDF頁面?
- 6. 單個頁面查看PDF-renderer java swing
- 7. 將頁面的pdf頁面保存爲多頁數組
- 8. 使用C劃分PDF頁面#
- 9. 使用PHP獲取單個PDF頁面
- 10. 使用PHP從.pdf中提取頁面
- 11. 使用dompdf將頁面轉換爲PDF
- 12. 使用iTextSharp獲取PDF頁面大小
- 13. 使用TCPDF和PHP生成PDF頁面
- 14. 使用PDFBox替換PDF頁面
- 15. 用PHP創建PDF頁面
- 16. 如何設置使用HTMLDoc生成的pdf頁面總數?
- 17. PHP中使用DOMPDF的PDF頁面中的頁眉
- 18. 疊加PDF頁面
- 19. 在每個頁面中添加paragraphe - 使用itext的Java中的PDF
- 20. pdf頁面的尺寸
- 21. PDF to java使用java
- 22. PDF到使用Java
- 23. 顯示只在第一頁使用itext生成的PDF頁面數
- 24. 使用CoreText的多頁PDF
- 25. 如何使用SWIFT顯示多文檔PDF頁面的單頁面
- 26. 使用Java獲取以下頁面的源代碼使用Java
- 27. java創建頁眉和頁腳的pdf
- 28. 使用PyPDF2爲pdf頁面添加頁邊距
- 29. iphone從pdf頁面創建PDF文件
- 30. 在不同pdf頁面中拆分pdf
請你能張貼您的代碼在這裏 – developer 2011-05-17 06:26:28
這不僅僅是代碼問題的普遍質疑。如果它能做到最好,我會繼續使用itext。但加載完整的文件似乎沒用。 – 2011-05-17 06:33:49
http://stackoverflow.com/a/4135059/489364此答案使用Apache PDFBox。 java庫 – kommradHomer 2013-06-18 06:44:36