android下PDF格式的地圖數據的顯示------超大PDF頁面顯示策略(一)

        這兩週,忙着做一個“PDF閱讀器”。不過這個PDF閱讀器不是一般的閱讀器,他要求打開的PDF是超大頁面的矢量PDF。說得直接點,PDF存儲的是地圖數據,我做一個地圖顯示界面。注意:這個PDF只有一頁!

這個項目的難點在於,在嵌入式系統上實時繪製和渲染超大PDF頁面。要顯示的PDF是一個8M矢量數據的地圖。顯示,一次性將PDF渲染出來是不現實的,除非你願意等20秒鐘然後纔看到地圖。

項目方案:(裁剪以渲染,拼接以顯示)

        首先,在PC上用另外一個工具軟件將8M的超大PDF頁面“矢量裁剪”成64個page,每個page都是800乘800像素(100%縮放比例下)。至於“矢量裁剪”的話,用adobe acrobat就可以,只是它只能手工裁剪。要想用軟件裁剪,也是可以的,用xpdf的源碼打造一個裁剪器就可以了。基本原理是,設定一個裁剪框,對於在框內的矢量數據,直接保留,在框外的矢量數據,直接丟棄,和框有交叉的數量數據,直接保留(這樣簡單)。

        因爲每個page是等尺寸的,於是拼接顯示就方便很多。裁剪後的64個page組成一個8乘8的二維矩陣pages,所有page拼合在一起,就是原始的PDF頁面。明白這個道理後,要拼接顯示就容易多了。

        給定一個屏幕顯示位置後,計算出在pages矩陣中和屏幕相交的page,然後分別渲染出來,最後拼接顯示在屏幕中即可。

方案優勢:

        1.把大頁面的pdf頁面裁剪成小頁面的pdf頁面,渲染每個小頁面的pdf頁面,速度很快,效率高,同時屏幕瀏覽到哪裏才渲染附近的pdf頁面,大大提高繪圖速度,讓用戶能夠第一時間看到渲染出來的地圖。

        2.超大pdf裁剪成小頁面後,可以以小頁面爲單位做圖片緩存。當用戶漫遊回以前瀏覽過的地方後,直接從圖片緩存中拉取圖片出來拼接顯示即可,提高用戶體驗。

項目具體介紹見下文。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章