场景
- 将PDF里面的内容渲染到原生的View上面,一直没接触过这部分的技术,所以在网上寻找了下,终于发现了Android原生自带的类,也是今天我们着重讲的内容。
PdfRenderer
从名字上可以看出,这个是和渲染有关系的类型。这里我通过加载本地pdf文件到手机上为例子展开说一下如何使用。大致的步骤:读取pdf文件数据 -> 构建图片渲染句柄 -> 创建空位图 -> 渲染句柄将数据渲染在空位图 -> 输出有数据位图
如何使用
-
首先目录下创建assets,把pdf文件放进去。
本地pdf文件
-
打开、读取文件
mFileDescriptor = context.applicationContext.assets.openFd("sample.pdf").parcelFileDescriptor
- 创建构建图片渲染句柄
mPdfRenderer = PdfRenderer(mFileDescriptor!!)
- 选择渲染哪一页的渲染数据
val mCurrentPage = render.openPage(currentPage)
- 创建空位图
//空位图的大小,Config是图片ARGB通道,8888是最清晰的了
val bitmap = Bitmap.createBitmap(
mCurrentPage.width,
mCurrentPage.height,
Bitmap.Config.ARGB_8888
)
- 将数据渲染到空位图上
//render支持裁切和旋转参数
mCurrentPage.render(bitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_PRINT)
- 销毁
当不需要用的时候,要将资源给销毁掉,要不然会引起内存泄漏问题
fun clear() {
mFileDescriptor?.close()
mPdfRenderer?.close()
mFileDescriptor = null
mPdfRenderer = null
}
效果
![](https://img.haomeiwen.com/i14517298/c0a95ce7553638fc.gif)
具体demo地址:https://github.com/Linsixu/CSG的feature/1.0.0-pdf-to-image分支。
网友评论