PDF 到 html 和 webview
Posted
技术标签:
【中文标题】PDF 到 html 和 webview【英文标题】:PDF to html and webview 【发布时间】:2019-01-17 22:50:24 【问题描述】:好的,所以我正在制作一个应用程序(我是 android 新手),其中包含特定主题的注释。我将以 PDF 格式创建这些笔记。 现在我已经在我的应用程序中实现了积分系统, 因此,100 分可以解锁笔记并在应用程序中阅读,1000 分可以将其保存在您的设备上(本地)。
所以现在 PDF 查看器和所有内容都很复杂,所以我会将这些笔记从 PDF 转换为 html,并将所有资源和 HTML 放在 assets 文件夹中。我将在 WebView 中显示这些 html 注释。所以现在我的问题是我应该为 WebView 使用外部库吗? 我基本上想要的是: - 用户应该能够放大和缩小(因为他很舒服地阅读笔记) - 滚动应该在 webview 中工作(通常是原生的) - 用户不应该能够在 webview 中选择文本(只读模式类型),这样他就不能分享内容。如果他想分享,请使用 1000 点并下载 PDF...
我该如何实现呢?下载PDF是后面的部分,我现在比较关心
用户不应该能够在 webview 中选择文本
这可能吗?截图没问题。 (我知道它不是,但笔记会很大,所以截图也是一项任务:P)
【问题讨论】:
所以你的意思是你不希望你的用户从你的网页上复制文本吗? 【参考方案1】:我认为您可以做一件事,如果它满足您的所有要求,您可以使用以下方法:
1]您可以通过点击某个 URL 将 PDF 下载到最终用户的手机中(为此您需要一个 API),或者您可以将其放在应用程序的存储中:
i) Assets 文件夹 - 如果您想在应用程序中保留/存储一些 PDF(这可能会增加您的 APK 大小,并且您无法在 assets 文件夹中写入内容,但您可以阅读从它)或,
ii) 使用 SQLite 数据库 - 您可以为 Android 管理自己的 SQLite 数据库来存储 PDF(这是一种有效的方法,因为您可以读取以及将数据写入此数据库,如果实现此),这两个存储选项都是完全安全的,除非设备已获得 root 权限,即无法从应用程序外部访问数据,除非设备已获得 root 权限,并且当用户使用/授予想要在其设备上保存文件 (PDF) 的 1000 点时(本地),然后您可以将该文件从您应用的数据库写入相应用户设备的外部存储,从而使其可以在您的应用外部访问。
2] 您可以使用 PdfRenderer 类(存在于 Android 中),它可以渲染 PDF 文档(在 API 级别 21 中添加,即 Lollipop)。如果您使用此功能,则只有在其 Android 设备中具有 Lollipop 及更高版本的用户才能转换为您的应用程序的最终用户。所以,记住这件事。 PdfRenderer 所做的是,它将给定 PDF 的每一页呈现为位图图像,然后可以在 ImageView 中显示,这可以满足您的要求,因为 PDF 的每一页都不能从给定的 PDF 页面复制内容现在显示在 ImageView 中的位图图像。
参考资料:
a] PdfRenderer 理论 - https://developer.android.com/reference/android/graphics/pdf/PdfRenderer
b] PdfRenderer 示例(使用 Java 代码)-https://github.com/googlesamples/android-PdfRendererBasic/#readme
c] PdfRenderer 示例(使用 Kotlin 代码)-https://github.com/googlesamples/android-PdfRendererBasic/tree/master/kotlinApp/#readme
3]然后,如果您渲染的位图图像(单个页面的单个位图图像)大于相应设备的尺寸,则可以将 ScrollView 应用为父级。
4]要在该位图图像上应用放大和缩小效果,您可以使用 Chrisbane 的 PhotoView 而不是使用普通的 ImageView。
参考:
a] Chrisbane 的 PhotoView - https://github.com/chrisbanes/PhotoView
注意:还应完成应用程序的方向处理,以便为要制作的应用程序的各个用户提供更好的用户体验。祝你好运!【讨论】:
好的,我今天试试...非常感谢您提供如此出色的描述性答案以上是关于PDF 到 html 和 webview的主要内容,如果未能解决你的问题,请参考以下文章
使用 PHP 将 HTML 转换为 PDF(不是 PDF 到 HTML)[关闭]
如何使用 iText 和 XMLWorker 生成有效的 PDF/A 文件(HTML 到 PDF/A 过程)