javascript - 在android中实现pdf.js从sd卡读取

标签 javascript android html pdf pdf.js

我正在尝试为我的 Android 应用程序实现一个 pdf 查看器,它显示 SD 卡中存在的不同 pdf 文件。

我正在考虑使用 pdf.js 库。我使用了此处发布的代码示例:https://bitbucket.org/butelo/pdfviewer/

但是,该库采用 javascript 文件中的 pdf url,该 url 是其所属文件夹 (/assets/pdfviewer) 的相对地址。

<script type="text/javascript">
var url = '../compressed.tracemonkey-pldi-09.pdf';
</script>

如何重定向它以使用 sdcard 文件夹中的 pdf?

此外,pdf 的文件名不是固定的,我需要根据要求在程序中更改它们。

更新-------------------------------------------- ---------------------------------------------- --------------------------

我像这样更新了 java 代码:

Uri path = Uri.parse(Environment.getExternalStorageDirectory().toString() + "/data/test.pdf");
        webView.loadUrl("file:///android_asset/pdfviewer/index.html?file=" + path);

在 pdffile.js 中,我修改了以下内容:

来自:

<script type="text/javascript">
var url = '../compressed.tracemonkey-pldi-09.pdf';
</script>

收件人:

var url = getURLParameter('file');


function getURLParameter(name) {
return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.search)||[,""])[1].replace(/\+/g, '%20'))||null}

上面的 javascript 代码从 'index.html' 的 URL 中提取 'file' 参数

还是不行。 logcat 中的 webview 'chromium' 显示:

I/chromium(1353): [INFO:CONSOLE(106)] "Warning: Unhandled rejection: 
Unexpected server response (0) while retrieving PDF "file:///storage/sdcard0/data/test.pdf".", source: file:///android_asset/pdfviewer/pdf.js (106)"

这似乎是跨服务器问题。那么如何修改 pdf.js 代码以在没有服务器的情况下读取本地文件?

最佳答案

解决了这个问题。该应用缺少 READ_EXTERNAL_STORAGE 权限。

可以在以下位置找到代码:https://github.com/pauldmps/Android-pdf.js 它的 Apache V2 许可证,所以请随意在您的应用程序中使用。

关于javascript - 在android中实现pdf.js从sd卡读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24291980/

相关文章:

android - 单击 editText 跨度中的删除按钮删除元素

html - 使用溢出自动并排 float 文本

javascript - 调整浏览器窗口大小时保留在内容中

javascript - 在页面加载前完成加载条

用于 float 的 Python 中的 JavaScript toString(16)?

javascript - Chrome 扩展程序 : can detect drag&drop in address bar?

html - CSS- HOVER 影响两个 div

javascript - 变量未正确设置自身

java - 在 Android 上,带有 fragment 的 Save-Bundle 不保存状态

javascript - 更改配置后通过WebView和JS函数调用JavascriptInterface方法经常不起作用