【代码案例】HarmonyOS 鸿蒙Next 使用Web组件预览PDF文件实现案例

发布于 1周前 作者 yuanlaile 最后一次编辑是 5天前 来自 鸿蒙OS

【代码案例】HarmonyOS 鸿蒙Next 使用Web组件预览PDF文件实现案例

HarmonyOS Next应用开发案例(持续更新中……)

本案例完整代码,请访问:https://gitee.com/harmonyos-cases/cases/tree/master/CommonAppDevelopment/feature/webpdfviewer

介绍

本案例通过Web组件实现预览本地PDF文件预览网络PDF文件,代码为Tabs容器组件包含了两个独立的TabContent子组件,分别标示为预览本地PDF文件预览网络PDF文件。每个子组件内部构建一个Web组件。第一个Web组件利用resource协议关联本地PDF文件路径以预览本地存储的PDF资源;第二个Web组件则通过配置网络链接属性,实现从互联网加载并预览远程PDF文件内容。

效果图预览

使用说明

  1. 进入页面默认预览本地PDF文件,点击预览网络PDF文件按钮可以切换到预览网络PDF文件模块。

实现思路

  1. 本地PDF加载:通过resource协议(需在工程resources/rawfile 目录下添加PDF文件,通过RESOURCE_URL获取的PDF文件)来实现本地PDF文件资源的装载与呈现,在无需网络连接的情况下,也能顺利加载并预览用户本地PDF资源。
    Web({ src: RESOURCE_URL, controller: this.controller })
      .onProgressChange((event) => {
     if (event) {
       this.localProgressValue = event.newProgress
         if (this.localProgressValue >= TOTAL_VALUE) {
           this.isHiddenLocalProgress = false;
         }
      }
     })
     .domStorageAccess(true) // 设置是否开启文档对象模型存储接口(DOM Storage API)权限,默认未开启。
     
  2. 网络PDF加载:通过设置网络链接属性,能够对接互联网上的PDF文件资源。提供有效的远程PDF文件URL(REMOTE_URL),实现云端PDF资源的加载与预览。
    Web({ src: REMOTE_URL, controller: this.controller })
      .onProgressChange((event) => {
     if (event) {
       this.remoteProgressValue = event.newProgress
         if (this.remoteProgressValue >= TOTAL_VALUE) {
           this.isHiddenRemoteProgress = false;
         }
      }
     })
     .domStorageAccess(true) // 设置是否开启文档对象模型存储接口(DOM Storage API)权限,默认未开启。
    
    

注: 其中domStorageAccess 方法用于控制Web中对文档对象模型存储(DOM Storage API)的启用状态,若将其设置为 false,可能会影响到PDF文件在Web中的预览功能,因此需要将其设为 true 以确保PDF文件能够正常预览。

高性能知识点

不涉及

工程结构&模块类型

webpdfviewer                                     // har类型
|---view
|   |---WebPDFViewer.ets                         // PDF加载主页 
|---rawfile
|   |---sample.pdf                               // PDF文件资源

模块依赖

本实例依赖common模块来实现资源的调用以及路由模块来注册路由

参考资料

Web

Tabs

Progress

14 回复
跑demo,我的手机加载不出来

需要保持系统为最新版本,我这里可以。你是什么版本的?

黑屏,求解决

我也是黑屏,api11

试了下直接加载会黑屏 但是如果切换取load其他的数据,再切回来就能正常加载进度条了。

其中domStorageAccess 方法用于控制Web中对文档对象模型存储(DOM Storage API)的启用状态,若将其设置为 false,可能会影响到PDF文件在Web中的预览功能,因此需要将其设为 true 以确保PDF文件能够正常预览

这个比较关键,学习了

NEXT Developer Preview1 版本
请问加载完pdf webview的一些滚动事件无法监听到
案例中本地pdf是存放在rawfile中的,请问沙盒环境的文件该怎样加载?
Web组件好像禁止加载沙盒环境的文件
cke_194.png请问我加载PDF的时候上面,会出现这个工具栏,你这边是怎么去掉的?

有要学HarmonyOS AI的同学吗,联系我:https://www.itying.com/goods-1206.html

toolbar=1/0 |打开或关闭顶部工具栏。 URL示例:https://example.com/test.pdf#toolbar=0

请问pdf的url中包含中文,加载白屏,有处理方案吗?

在HarmonyOS鸿蒙系统中,使用Web组件预览PDF文件通常涉及将Web技术(如HTML、CSS、JavaScript)与鸿蒙的Ability框架结合。一种常见方法是利用WebView组件来加载一个包含PDF查看功能的网页。这里是一个简要的实现步骤概述:

  1. 创建WebView: 在你的鸿蒙项目中,首先需要在相应的布局文件中添加一个WebView组件。

  2. 加载PDF查看网页: 通过WebView的API,加载一个在线的PDF查看器网页(如PDF.js或Google的PDF Viewer等),或者如果你有权限和服务器资源,也可以加载一个本地服务器提供的页面。

  3. 处理文件路径: 如果PDF文件是存储在本地或特定服务器上的,确保WebView加载的页面能够正确接收并显示这个PDF文件的URL。

  4. 配置权限: 确保你的应用具有访问网络和存储(如果PDF文件在本地)的权限。

  5. 调试与测试: 在不同的设备和模拟器上测试PDF预览功能,确保兼容性和性能。

  6. 优化用户体验: 根据需要调整WebView的设置,如缓存策略、加载进度提示等,以提升用户体验。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html 。请注意,上述网址为示例,实际应使用HarmonyOS或华为开发者官网的正确地址。

回到顶部