2013-05-06 64 views
0

我試圖閱讀沒有。使用pdf的PDF(通過尋找「/計數XX」),但我似乎做錯了什麼。我將所有字符讀入緩衝區,並使用字符串類的find來獲得命中。但是我嘗試過的許多文件只能使用一次。 我在做什麼錯?閱讀pdf頁數與C + +

http://pastebin.com/2FAXPZhE

我一定要通過使用行函數getline()或東西線看懂了嗎?

PS:我不想使用外部庫,因爲這是用於我的大學項目,我不能使用外部工具。

在此先感謝。 〜Deltatiger

回答

3

你做錯了什麼是你的方法是完全不適合你想要完成的。出於許多不同的原因 - 我只列出幾個:

1)PDF支持增量更新,原始PDF文件和文件末尾的更新塊中可能有不同數量的頁面。

2)「/ Count」可能完全用於除文件中頁面數以外的其他內容。

3)PDF文件中的頁面存儲在樹狀結構中,該樹中的「/ Count」字段列出樹中該部分的頁數。在包含多個頁面的PDF文件中,您可能會有許多不同的對象列出與頁面有關的「/ Count」值。

簡而言之,無法理解PDF文件格式(可以從Adobe網站下載PDF規範),無法正確評估PDF文件中的頁面數量。您將不得不使用理解文件格式的庫併爲您解析它,否則您需要編寫這樣的代碼。這不是一個小項目(至少可以這麼說)。

+1

+1;添加另一個原因:4)**/Count **鍵的值可能是間接引用,指向文件的某個完全不同的區域;但還有更多的原因。 – mkl 2013-05-07 08:53:57

+0

不錯的一個!沒有想到,甚至:) – 2013-05-07 11:30:04

0

我明白這個問題在一年前被問及過,但如果其他人仍在尋找解決方案,我提供自己的C++代碼,現在上傳到SourceForge here

您將從我的代碼中看到,頁數可以位於任意數量的棘手位置,通常位於壓縮數據流中。我只是剛剛從幾年前寫過的一些Delphi代碼中翻譯出來的,因此,如果有任何轉換錯誤,將它作爲beta版本處理可能是明智的做法。但是,它已通過適量)