我在 Assets 文件夹中有一个 pdf 文件,想打开它。我需要创建一个File
如下以便设置为ParcelFileDescriptor
传递给PdfRenderer
.
private val pdfRenderer by lazy {
val file = File(cacheDir, "tempFile")
file.outputStream().use { fileOut ->
assets.open("TestPdf.pdf").copyTo(fileOut)
}
val fileDescriptor = ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY)
PdfRenderer(fileDescriptor)
}
这似乎很蹩脚,因为我需要创建临时文件,即使我的资产文件夹中有物理文件。有没有办法跳过在缓存中创建临时文件?
额外信息:我尝试使用以下
private val pdfRenderer by lazy {
PdfRenderer(assets.openFd("TestPdf.pdf").parcelFileDescriptor)
}
但我得到了这个错误Caused by: java.io.FileNotFoundException: This file can not be opened as a file descriptor; it is probably compressed
。
我把它放在 build.gradle
aaptOptions {
noCompress "pdf"
}
并得到了这个错误Caused by: java.io.IOException: file not in PDF format or corrupted