【代码案例】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


更多关于【代码案例】HarmonyOS 鸿蒙Next 使用Web组件预览PDF文件实现案例的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

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

更多关于【代码案例】HarmonyOS 鸿蒙Next 使用Web组件预览PDF文件实现案例的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


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

黑屏,求解决

我也是黑屏,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或华为开发者官网的正确地址。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!