Получение миниатюры PDF, присутствующего в папке активов, дает исключение для файла, не найденного - PullRequest
0 голосов
/ 11 января 2019

Я пытаюсь извлечь растровое изображение из PDF. Я следую за этим сообщением от переполнения стека Создание миниатюры Pdf в 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 файла, присутствующего в папке ресурсов, но я продолжаю получать исключение файла не найден

Как получить URI из файла актива? Получить Uri из файла в активах или в формате res / raw Как передать путь к файлу, который находится в папке активов, в File (String path)?

1 Ответ

0 голосов
/ 11 января 2019

file:///android_asset/ работает для WebView и еще немного.

Попробуйте это:

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

В основном, используйте AssetManager и openFd(), чтобы получить AssetFileDescriptor, затем используйте getParcelFileDescriptor(), чтобы получить ParcelFileDescriptor, чтобы попытаться передать ваш PdfiumCore.

Если это не сработает, посмотрите, как он справляется с этим в AndroidPdfViewer. Это определенно поддерживает ресурсы и использует PdfiumAndroid, так что каким-то образом он заставляет активы работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...