回答
退房 「SimpleTextParser」 和com.itextpdf.text.pdf.parser包的其餘部分(或任何其稱爲C#-Ville)。
請注意,「文本的第一行」是PDF中非常滑溜的概念。字形在特定座標處繪製。如果給定的字形叢發生共享基線,它們在視覺上位於同一條線上。如果給定的共享基線是最靠近頁面頂部的基線,則它是「第一個」。
哦,頁面可能會旋轉,將所有東西都扔到一個叫做「矩陣數學」的特殊類型的地獄中。
沒有特別的要求按照邏輯順序寫出PDF中的文本。人們可以完成所有'a',然後'b'等等。沒有血腥可能(或有效),但完全合法。可能是給定字體中的所有文本都是繪製的,後面跟着下一個字體中的所有文本,等等。如果第一行文本恰好處於兩種不同的字體(粗體,斜體等)中,那麼您可能會發現比想要找到正確的文本行更難。程序可以按字母順序遍歷字體,或將它們存儲在哈希映射中......不依賴於邏輯順序來匹配「繪製的命令」。遲早(可能會更早)你會受到無禮的震驚。
我建議你去閱讀一個iText FAQ或兩個。你的問題暴露了一個無知的程度,只需你付出一點努力就能輕鬆治癒。如果沒有其他的話,從iText In Action(及其樣品聚寶盆)免費提供的章節應該證明是明亮的。
而所有假設你的PDF中的文本確實是文本。它可能是未映射的字形(沒有「字形」信息的「字形集合」),位圖或線條藝術。如果出現這種情況,你幾乎會被OCR卡住(至少應該以合理的順序給你提供文本)。如果您可以從Acrobat/Reader中選擇,複製和粘貼,則可以使用iText獲取文本。如果沒有,你幾乎註定了。 – 2010-11-09 23:52:16
byte[] pdf;
BufferedReader in = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(pdf)));
String firstLine = in.readLine();
in.close();
- 1. 讀取字節數組
- 2. 從字節數組讀取行(不將字節數組轉換爲字符串)
- 3. 讀取字節數組與將字節數組寫入文件
- 4. 獲取字節數組的讀取器
- 5. 讀取字節數組多個文件
- 6. 讀取/寫入字節數組的Android
- 7. 讀取Java中的C#字節數組
- 8. 轉到:讀取的字節到數組
- 9. 用OpenGL讀取圖像字節數組
- 10. 從字節數組讀取3位
- 11. std ::數組和字節讀取
- 12. 從字節獲取第一行字符與出字節
- 13. 如何從PDF生成的PDF中獲取字節數組?
- 14. 從數組讀取字節數組到Java數組
- 15. 從C#中的BinaryReader讀取字符串不讀取第一個字節
- 16. 如何從c中的字節數組讀取字節範圍
- 17. 將文件讀取到字節數組時的冗餘字節
- 18. 使用C#字節讀取字節數組我使用C#
- 19. 如何讀取字節數組中的前3個字節
- 20. C++讀取一行數字
- 21. 讀取下一個字節的位數
- 22. getline()不讀取第一行
- 23. getline函數只讀取第一行
- 24. 從XMLDocument讀取第一個節點
- 25. 從一個進程的輸出讀取字節數組
- 26. 發行讀/寫一個動態的字節數組註冊表
- 27. 簽名PDF文檔從字節數組
- 28. 合併2 PDF字節數組到1
- 29. 返回pdf字節數組WCF
- 30. 發送PDF字節數組打印
我不知道,但我想我會有更多的運氣直接詢問iText背後的人,如果它可能與他們的產品。 – 2010-11-08 20:53:18
從我最小的PDF格式知識中,我可以告訴你,閱讀第一行文本需要先閱讀/解析文本。 – Vercas 2010-11-08 20:58:32