2010-11-08 147 views
0

我有一個pdf字節數組,並想知道是否有簡單的方法將第一行文本讀入變量?pdf字節數組讀取第一行

感謝, 杆

+0

我不知道,但我想我會有更多的運氣直接詢問iText背後的人,如果它可能與他們的產品。 – 2010-11-08 20:53:18

+0

從我最小的PDF格式知識中,我可以告訴你,閱讀第一行文本需要先閱讀/解析文本。 – Vercas 2010-11-08 20:58:32

回答

1

退房 「SimpleTextParser」 和com.itextpdf.text.pdf.parser包的其餘部分(或任何其稱爲C#-Ville)。

請注意,「文本的第一行」是PDF中非常滑溜的概念。字形在特定座標處繪製。如果給定的字形叢發生共享基線,它們在視覺上位於同一條線上。如果給定的共享基線是最靠近頁面頂部的基線,則它是「第一個」。

哦,頁面可能會旋轉,將所有東西都扔到一個叫做「矩陣數學」的特殊類型的地獄中。

沒有特別的要求按照邏輯順序寫出PDF中的文本。人們可以完成所有'a',然後'b'等等。沒有血腥可能(或有效),但完全合法。可能是給定字體中的所有文本都是繪製的,後面跟着下一個字體中的所有文本,等等。如果第一行文本恰好處於兩種不同的字體(粗體,斜體等)中,那麼您可能會發現比想要找到正確的文本行更難。程序可以按字母順序遍歷字體,或將它們存儲在哈希映射中......不依賴於邏輯順序來匹配「繪製的命令」。遲早(可能會更早)你會受到無禮的震驚。

我建議你去閱讀一個iText FAQ或兩個。你的問題暴露了一個無知的程度,只需你付出一點努力就能輕鬆治癒。如果沒有其他的話,從iText In Action(及其樣品聚寶盆)免費提供的章節應該證明是明亮的。

+0

而所有假設你的PDF中的文本確實是文本。它可能是未映射的字形(沒有「字形」信息的「字形集合」),位圖或線條藝術。如果出現這種情況,你幾乎會被OCR卡住(至少應該以合理的順序給你提供文本)。如果您可以從Acrobat/Reader中選擇,複製和粘貼,則可以使用iText獲取文本。如果沒有,你幾乎註定了。 – 2010-11-09 23:52:16

0
byte[] pdf; 
BufferedReader in = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(pdf))); 
String firstLine = in.readLine(); 
in.close(); 
+0

這可能不是他正在尋找:) – 2010-11-08 20:51:23

+0

哦......也許我應該將它重新標記爲「Java」,所以我的回答更合適:) – Daniel 2010-11-08 20:54:35

+0

哦2!我以爲他想讀取字節數組的第一行來確定PDF版本...不是PDF文本的第一行。 – Daniel 2010-11-08 20:55:43