我使用PdfRenderer在Android API 25中渲染PDF预览:
var parcelFileDescriptor: ParcelFileDescriptor? = null
var pdfRenderer: PdfRenderer? = null
var firstPage: PdfRenderer.Page? = null
try {
val file = File(filePath)
parcelFileDescriptor = ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY)
pdfRenderer = PdfRenderer(parcelFileDescriptor) // it throw exception or crash from here
firstPage = pdfRenderer.openPage(0)
// Do something with firstPage
} catch (e: Exception) {
e.printStackTrace()
} finally {
firstPage?.close()
pdfRenderer?.close()
parcelFileDescriptor?.close()
}
但是在第一次调用时,它抛出了java.lang.SecurityException: cannot create document. Error: 4
。从第二次或第三次调用开始,它没有响应,并在本机中崩溃。我只是从一个线程调用它,所以没有并发问题。有人能帮助我吗?
1条答案
按热度按时间zed5wv101#
我发现尝试在Android〈P上打开密码保护的PDF文件会导致崩溃:https://issuetracker.google.com/issues/37052344 .
要做的是在打开之前检查pdf文件是否加密。