場景
- 將PDF里面的內(nèi)容渲染到原生的View上面吁伺,一直沒接觸過這部分的技術(shù)涛酗,所以在網(wǎng)上尋找了下,終于發(fā)現(xiàn)了Android原生自帶的類沈跨,也是今天我們著重講的內(nèi)容由捎。
PdfRenderer
從名字上可以看出,這個是和渲染有關(guān)系的類型饿凛。這里我通過加載本地pdf文件到手機上為例子展開說一下如何使用狞玛。大致的步驟:讀取pdf文件數(shù)據(jù) -> 構(gòu)建圖片渲染句柄 -> 創(chuàng)建空位圖 -> 渲染句柄將數(shù)據(jù)渲染在空位圖 -> 輸出有數(shù)據(jù)位圖
如何使用
-
首先目錄下創(chuàng)建assets软驰,把pdf文件放進去。
打開心肪、讀取文件
mFileDescriptor = context.applicationContext.assets.openFd("sample.pdf").parcelFileDescriptor
- 創(chuàng)建構(gòu)建圖片渲染句柄
mPdfRenderer = PdfRenderer(mFileDescriptor!!)
- 選擇渲染哪一頁的渲染數(shù)據(jù)
val mCurrentPage = render.openPage(currentPage)
- 創(chuàng)建空位圖
//空位圖的大小锭亏,Config是圖片ARGB通道,8888是最清晰的了
val bitmap = Bitmap.createBitmap(
mCurrentPage.width,
mCurrentPage.height,
Bitmap.Config.ARGB_8888
)
- 將數(shù)據(jù)渲染到空位圖上
//render支持裁切和旋轉(zhuǎn)參數(shù)
mCurrentPage.render(bitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_PRINT)
- 銷毀
當不需要用的時候硬鞍,要將資源給銷毀掉慧瘤,要不然會引起內(nèi)存泄漏問題
fun clear() {
mFileDescriptor?.close()
mPdfRenderer?.close()
mFileDescriptor = null
mPdfRenderer = null
}
效果
具體demo地址:https://github.com/Linsixu/CSG的feature/1.0.0-pdf-to-image分支。