什么是PdfRenderer授瘦?
PdfRenderer是Android官方提供用于開發(fā)打開pdf文件功能的類(這個類是Android 5.0 API版本21 或以上才有的類)
如何使用
初始化PdfRenderer 對象
//1、根據(jù)文件路徑獲取File對象
val?pdfFile = File(pdfFilePath)
//2甜无、獲取 ParcelFileDescriptor 對象
var parcelFileDescriptor = ParcelFileDescriptor.open(pdfFile,ParcelFileDescriptor.MODE_READ_ONLY)
var pdfRenderer : PdfRenderer = parcelFileDescriptor?.let { PdfRenderer(it) }
渲染page數(shù)據(jù)到bitmap
(注:由于執(zhí)行Page對象的方法執(zhí)行線程是不安全的,會拋出異常,所以在使用Page對象調(diào)度方法時需保證線程安全,線程安全是指多個線程在執(zhí)行同一段代碼的時依次執(zhí)行,使每次的執(zhí)行結(jié)果和單線程執(zhí)行的結(jié)果都是一樣的盯漂,不存在執(zhí)行程序時出現(xiàn)意外結(jié)果。反之就是不安全)
//1笨农、獲取頁碼數(shù)據(jù)Page對象
var page PdfRenderer.Page = pdfRenderer.open( index )
//2周崭、創(chuàng)建一個Bitmap對象 (注意:必須使用ARGB_8888芳誓,別問為什么,問就是特性)
var bitmap = Bitmap.createBitmap( bitmapRealWidth, mRealHeight, Bitmap.config.ARGB_8888 )
//3、調(diào)度api方法渲染
page?.render( bitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY )
//4、關(guān)閉當(dāng)前page數(shù)據(jù)
page?.close()
最后
//得到渲染好的Bitmap對象
//.......使用bitmap對象處理你的邏輯
總結(jié)
優(yōu)點(diǎn):本身是Android提供的,比較輕量無需依賴第三方SDK,核心代碼都是native實(shí)現(xiàn),執(zhí)行效率比較高
缺點(diǎn):只能在Android5.0 或以上版本使用渣淳,由于實(shí)現(xiàn)方式是native 所以無法自己定制渲染算法,以及方式伴箩、使用時還需要自己控制線程安全比較繁瑣