使用库 github.barteksc.pdfviewer 在我的应用程序中加载 PDF 时出现错误

Posted

技术标签:

【中文标题】使用库 github.barteksc.pdfviewer 在我的应用程序中加载 PDF 时出现错误【英文标题】:I am getting an error while loading a PDF in my app with the library github.barteksc.pdfviewer 【发布时间】:2020-03-19 21:08:07 【问题描述】:

这是我在 logcat 中遇到的错误

E/PDFView: load pdf error
     java.io.IOException: cannot create document: File not in PDF format or corrupted.
         at com.shockwave.pdfium.PdfiumCore.nativeOpenMemDocument(Native Method)
         at com.shockwave.pdfium.PdfiumCore.newDocument(PdfiumCore.java:126)
         at com.github.barteksc.pdfviewer.source.InputStreamSource.createDocument(InputStreamSource.java:37)
         at com.github.barteksc.pdfviewer.DecodingAsyncTask.doInBackground(DecodingAsyncTask.java:53)
         at com.github.barteksc.pdfviewer.DecodingAsyncTask.doInBackground(DecodingAsyncTask.java:25)
         at android.os.AsyncTask$2.call(AsyncTask.java:288)
         at java.util.concurrent.FutureTask.run(FutureTask.java:237)
         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
         at java.lang.Thread.run(Thread.java:841)

【问题讨论】:

谁告诉你图书馆会显示来自互联网的 pdf?你为什么不告诉你使用了互联网网址? 真的吗?那么我该如何使用互联网 URL。? 【参考方案1】:

这是在barteksc/AndroidPdfViewer issue 175 中报告的

有同样的错误。由于某种原因,直接从资产中读取 PDF 不起作用,并给出了上述错误。

所以将它从资产复制到缓存目录,然后一切正常。

但首先,请仔细检查您是否可以打开该 PDF 文件(独立于您的执行环境,在您的 Java 程序之外)。

【讨论】:

我的应用程序不是为了阅读 PDF 格式的资产文件夹而创建的,我是通过 URL 链接从互联网获取的。 @AkshayRaut 您是否测试了该链接(独立于您的 Android 环境)以查看该链接后面是否有 pfd? 是的!我的链接是打开的,它可以在 pc 和我的 android 上运行。我确实在我的 android 的另一个浏览器中测试了 pdf 链接,它打开了。 @AkshayRaut 使用 chrome devtool (developers.google.com/web/tools/chrome-devtools/network) 的网络面板,您能否检查该链接是否通过重定向 (***.com/a/12282621/6309)?也许图书馆没有正确遵循那些 URL 重定向?

以上是关于使用库 github.barteksc.pdfviewer 在我的应用程序中加载 PDF 时出现错误的主要内容,如果未能解决你的问题,请参考以下文章

Win32编程之静态库编写与使用.动态链接库的编写与使用

Linux上静态库和动态库的编译和使用

如何在android使用已经有的静态库

如何使用cmake生成基于静态库的动态链接库

VC 静态库与动态库静态库创建与使用

.a静态库的制作及使用