![Android App开发进阶与项目实战](https://wfqqreader-1252317822.image.myqcloud.com/cover/109/44510109/b_44510109.jpg)
上QQ阅读APP看书,第一时间看更新
4.2.1 PDF文件渲染器
Android集成了PDF的渲染操作,从很大程度上方便了开发者,这个PDF文件渲染器便是PdfRenderer。渲染器允许从存储卡读取PDF文件,示例代码如下:
![](https://epubservercos.yuewen.com/0C084D/23721623101012206/epubprivate/OEBPS/Images/Figure-P131_17450.jpg?sign=1739528911-HKnDoHcYVGJ2zWsPuRb9WDTnN6rRkGVQ-0-c05104283a8f9c4664b8c92a80ff88cb)
打开PDF文件只是第一步,接下来使用PdfRenderer工具加载PDF文件,并进行相关的处理操作。下面是PdfRenderer类的常用方法:
- 构造方法:从ParcelFileDescriptor对象构造一个PdfRenderer实例。
- getPageCount:获取PDF文件的页数。
- openPage:打开PDF文件的指定页面,返回一个PdfRenderer.Page对象。
- close:关闭PDF文件。
从上面列出的方法可以看到,PDF渲染器只提供了对整个PDF文件的管理操作,具体的页面处理(比如渲染操作)得由PdfRenderer.Page对象来完成。下面是Page类的常用方法:
- getIndex:获取该页的页码。
- getWidth:获取该页的宽度。
- getHeight:获取该页的高度。
- render:渲染该页面的内容,并将渲染结果写入一个位图对象。开发者可把位图对象保存到存储卡的图片文件。
- close:关闭该页面。
总而言之,PDF渲染器支持把一个PDF文件转成若干图片。开发者可以将这些图片展示在屏幕上。下面的代码片段演示如何将PDF文件解析为一组图片文件的路径列表:
(完整代码见ebook\src\main\java\com\example\ebook\util\AssetsUtil.java)
![](https://epubservercos.yuewen.com/0C084D/23721623101012206/epubprivate/OEBPS/Images/Figure-P132_17451.jpg?sign=1739528911-wlGtvzf0IVTh1eiGBZZavuegAh3Uvv3m-0-e38f24530c762c2c12d296c29259824d)
按照解析完成的图片路径调用图像视图的setImageURI方法,即可在界面上显示PDF图片。渲染完成的PDF页面效果如图4-9~图4-12所示。图4-9为解析得到的第一页PDF图片,图4-10为解析得到的第二页PDF图片,图4-11为解析得到的第三页PDF图片,图4-12为解析得到的最后一页PDF图片。
![](https://epubservercos.yuewen.com/0C084D/23721623101012206/epubprivate/OEBPS/Images/Figure-P133_8392.jpg?sign=1739528911-rKQZ5nMfnh7lpeDocp9zaF8kdmyFhQVK-0-600b39e89911d270599808760a97d22c)
图4-9 解析得到的第一页PDF图片
![](https://epubservercos.yuewen.com/0C084D/23721623101012206/epubprivate/OEBPS/Images/Figure-P133_8393.jpg?sign=1739528911-L9cqgEe3VxkqvpGkfdCH1sn1UdgMUemu-0-3cb1c8611662d831296d8abc1e3d4ec0)
图4-10 解析得到的第二页PDF图片
![](https://epubservercos.yuewen.com/0C084D/23721623101012206/epubprivate/OEBPS/Images/Figure-P133_8397.jpg?sign=1739528911-8RybWcBmW4TpiYxHPsXDgwfSy17AMaBO-0-65e007b5847d848d7fcd7d4a52303bc7)
图4-11 解析得到的第三页PDF图片
![](https://epubservercos.yuewen.com/0C084D/23721623101012206/epubprivate/OEBPS/Images/Figure-P133_8398.jpg?sign=1739528911-llJKIEnruNdTpSJXAtuyBXxTArsar8Ri-0-252d493712661db6112fd571c27f748d)
图4-12 解析得到的最后一页PDF图片