pdf文件内容查看器 -- 采用wpf开发
前言?pdf是一種應用非常廣的版式文檔格式,已成為事實上的國際標準。關于pdf格式的文章汗牛充棟,本文也是關于pdf格式的文章,但是本文不是紙上談兵;本人這幾周一直研究pdf格式內容,不但對pfd格式的內容有所了解,同時也寫了一款軟件,可以方便查看pdf文件內容。使用該軟件,同時結合pdf相關文章,可以很快掌握pdf格式內容。
軟件截圖:?軟件下載地址 點我下載
pdf文件內容簡要介紹
這里對pdf文件格式做個粗略介紹,只有了解了這些內容,才能知道如何使用該軟件。
pdf文檔總結構如下:
1)header:主要包含版本信息
2)tailer:pdf樹結構的入口點。
?3)交叉索引表;該表包含pdf每個obj在文件中的位置,根據該表,可以快速定位和加載obj的內容。對于大文件,不必一次加載所有的內容,只需加載當前頁包含的obj即可。
?4) body。包含obj對應的內容。
pdf obj樹狀結構
要完成對pdf文件的分析和顯示,首先需要構建pdf文件的obj的樹狀模型。這個樹狀模型的入口點就是trailer,trailer包含root元素(Catalog),其下包含Pages,Page。Page中包含內容和資源。
?
結合軟件分析pdf文件格式
用該軟件打開一個pdf文件,對照示例來分析。
1)pdf header:?
2)trailer和交叉引用表,
3)body?由一系列obj組成。每個obj由唯一編號,可根據編號定位到內容。
?4)文檔樹狀結構
頁集是頁的集合,pdf規范建議用平衡樹來組織頁,便于快速查找。
?
編程心得。
1 不能嚴格按照pdf標準來分析pdf。
pdf文檔應用非常廣,生成pdf文件的軟件非常多。不是所有的pdf文檔都嚴格符合標準。所謂“林子大了,什么鳥都有“。所以開發軟件要經過大量的pfd文檔測試。
2 分析obj的內容
pdf索引表只給出了obj開始文件位置。obj一般包含dictionary和stream兩部分。所以需要根據關鍵詞來解析obj,這就需要有一定的技巧。dictionary開始和結束的關鍵字為“<<” 和">>",但是dictionary可能包含子dictionary。只靠關鍵字是無法確定dictionary的開始和結束位置的,需要一定的技巧。
?
?
?3 讀取obj的效率。
不必一次加載所有的obj,可以采取按需加載。
后記?讀取pdf文件的內容,在內存中構建obj樹形結構,是下一步分析和顯示pdf的基礎。本人通過閱讀相關資料,加上編寫代碼,實現了對pdf文件內容的分析。理論和實踐相結合,就能快速的掌握相關知識。本軟件可以方便的窺探pdf內部結構,希望該軟件為你了解和開發pdf有所幫助。
總結
以上是生活随笔為你收集整理的pdf文件内容查看器 -- 采用wpf开发的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 写公众号的这一年多
- 下一篇: WeihanLi.Npoi 根据模板导