您的位置:首页 > 移动开发 > Android开发

android下PDF格式的地图数据的显示------超大PDF页面显示策略(一)

2011-11-15 19:58 155 查看
这两周,忙着做一个“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裁剪成小页面后,可以以小页面为单位做图片缓存。当用户漫游回以前浏览过的地方后,直接从图片缓存中拉取图片出来拼接显示即可,提高用户体验。

项目具体介绍见下文。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐