首页 > 解决方案 > PDF 到 html 和 webview

问题描述

好的,所以我正在制作一个应用程序(我是 android 新手),其中包含特定主题的注释。我将以 PDF 格式创建这些笔记。现在我已经在我的应用程序中实现了积分系统,所以你可以用 100 点解锁笔记并在应用程序中阅读它,用 1000 点你可以将它保存在你的设备上(本地)。

所以现在 PDF 查看器和所有内容都很复杂,所以我将把这些笔记从 PDF 转换为 HTML,并将所有资源和 HTML 放在 assets 文件夹中。我将在 WebView 中显示这些 html 注释。所以现在我的问题是我应该为 WebView 使用外部库吗?我基本上想要的是: - 用户应该能够放大和缩小(因为他很容易阅读笔记) - 滚动应该在 webview 中工作(通常是本机) - 用户不应该能够在 webview 中选择文本(只读模式类型),这样他就不能分享内容..如果他想分享,使用1000分并下载PDF...

我该如何实施?下载PDF是后面的部分,现在我更关心

用户不应该能够在 web 视图中选择文本

这可能吗 ?截图没问题。(我知道不是,但笔记会很大,所以截图也是一项任务:P)

标签: androidhtmlpdfwebview

解决方案


我认为您可以做一件事,如果它适合您的所有要求,您可以使用以下方法:

1]您可以通过点击某个 URL 将 PDF 下载到最终用户的手机中(您将需要一个 API),或者您可以将其放在应用程序的存储中:

i) 资产文件夹 - 如果您想在应用程序中保留/存储一些 PDF(这可能会增加您的 APK 大小,并且您无法向资产文件夹写入内容但您可以从中读取),或者,

ii) 使用 SQLite 数据库 - 您可以管理自己的用于 Android 的 SQLite 数据库来存储 PDF(这是一种有效的方法,因为您可以读取以及将数据写入此数据库,如果实现此功能),这两个存储选项都是完全安全的除非设备已植根,即无法从应用程序外部访问数据,除非设备已植根,并且当用户使用/授予他的 1000 点想要在其设备上(本地)保存文件(PDF)时,您可以编写该文件从您的应用程序的数据库到相应用户设备的外部存储,从而使其可以在您的应用程序之外访问。

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

  • 注意:还应该对应用程序进行定向处理,以便为要制作的应用程序的各个用户提供更好的用户体验。祝你好运!

推荐阅读