获取资产文件夹中存在的pdf缩略图会导致文件未找到异常

时间:2019-01-11 12:42:19

标签: android pdf kotlin

我正在尝试从pdf中提取位图图像。 我正在从堆栈溢出中关注此帖子 Generate Thumbnail of Pdf in Android

我的Pdf文件位于资产文件夹

private var quaranPdfUri = "quran.pdf"

我尝试了以下方法从资产文件夹中打开pdf

1.val parcelFileDescriptor  = contentResolver.openFileDescriptor(Uri.parse("file:///android_asset/$quaranPdfUri"),"r")
2. val parcelFileDescriptor = contentResolver.openAssetFileDescriptor(Uri.parse("file:///android_asset/$quaranPdfUri"),"r")?.parcelFileDescriptor
3. val parcelFileDescriptor = contentResolver.openInputStream(Uri.parse("file:///android_asset/$quaranPdfUri"))

但是在上述所有情况下,我都找不到文件异常。

我经历了一堆关于堆栈溢出的帖子,以获取资源文件夹中存在的文件uri,但我一直在找不到文件异常

How to get URI from an asset File? Get Uri from file in either assets or res/raw How to pass a file path which is in assets folder to File(String path)?

1 个答案:

答案 0 :(得分:1)

file:///android_asset/适用于WebView等。

尝试一下:

val context = TODO() // get a Context from somewhere
val assetFd = context.assets.openFd("quran.pdf")
val parcelFileDescriptor = assetFd.getParcelFileDescriptor()

基本上,使用AssetManager and openFd()获取AssetFileDescriptor,然后使用getParcelFileDescriptor()获取ParcelFileDescriptor尝试移交给PdfiumCore

如果这不起作用,请查看他如何在AndroidPdfViewer中处理它。那肯定支持资产并使用PdfiumAndroid,因此他以某种方式使资产正常工作。