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

标签 android pdf kotlin

我正在尝试从 pdf 中提取位图图像。 我正在从堆栈溢出中关注这篇文章 Generate Thumbnail of Pdf in Android

我的 Pdf 文件位于 Assets 文件夹中

private var quaranPdfUri = "quran.pdf"

我尝试了以下方法从 assets 文件夹中打开 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"))

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

我浏览了一堆关于堆栈溢出的帖子以获取 Assets 文件夹中存在的文件的 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)?

最佳答案

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 中的处理方式。这绝对支持 Assets 并使用 PdfiumAndroid,因此他以某种方式让 Assets 发挥作用。

关于android - 获取 Assets 文件夹中存在的 pdf 缩略图会导致文件未找到异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54146805/

相关文章:

android - 函数参数的动态数量

android - 为什么我会收到此错误 "Received status code 401 from server: Unauthorized"?

android - Android 设置/应用程序中未安装的应用程序

android - Android 服务的 START_STICKY 标志的精确语义

android - 在使用 Robolectric 测试 Activity 时模拟 SQLite 数据库

pdf - 如何将图像设置为pdf页面背景

java - 在android中添加两个MutableList

java - 有没有更强大的方法在 Android/Java/SQLite 中进行连接查询?

c# - 使用 itextsharp 签署多个 pdf,并且 token 每次都会提示输入 pin

javascript - 使用 Javascript 在浏览器中解析 PDF 表单数据