鸿蒙三方库 | harmony-utils之PreviewUtil文件预览与类型判断详解
前言文件预览是办公类应用的常见需求支持预览PDF、Word、Excel等文档。pura/harmony-utils的PreviewUtil封装了文件预览和类型判断方法帮助开发者快速实现文件预览功能。本文将从API说明、代码实战、进阶用法、常见问题等多个维度进行全面讲解帮助开发者快速掌握并应用到实际项目中。一、PreviewUtil核心APIPreviewUtil提供了以下文件预览方法方法说明返回类型使用场景canPreview(path)判断文件是否可预览boolean预览能力检测openPreview(path)打开文件预览void文档预览getFileType(path)获取文件类型string类型展示1.1 核心特性简洁易用封装复杂API为一行调用降低使用门槛类型安全完整的TypeScript类型定义编译期即可发现错误异常处理内置异常捕获机制避免运行时崩溃类型识别自动识别文件类型并匹配预览能力1.2 支持的文件类型文件类型扩展名预览支持文档.pdf, .doc, .docx✅表格.xls, .xlsx✅演示.ppt, .pptx✅图片.jpg, .png, .gif✅文本.txt, .csv✅二、完整使用步骤2.1 安装依赖ohpminstallpura/harmony-utils2.2 判断文件是否可预览import{PreviewUtil}frompura/harmony-utils;Button(判断是否可预览).width(100%).onClick((){try{letcanPreviewPreviewUtil.canPreview(/docs/test.pdf);this.result可预览:${canPreview?是 ✅:否 ❌};}catch(e){this.result异常: e;}})2.3 打开文件预览Button(打开预览).width(100%).onClick((){try{PreviewUtil.openPreview(/docs/test.pdf);this.result预览已打开 ️;}catch(e){this.result异常: e;}})三、完整页面示例import{PreviewUtil}frompura/harmony-utils;EntryComponentstruct PreviewDemo{Stateresult:string;build(){Column({space:12}){Button(判断预览能力).width(100%).onClick((){try{letcanPreviewPreviewUtil.canPreview(/docs/test.pdf);letfileTypePreviewUtil.getFileType(/docs/test.pdf);this.result可预览:${canPreview}\n类型:${fileType};}catch(e){this.result异常: e;}});Text(this.result).fontSize(14).fontColor(#333333)}.padding(16)}}四、进阶用法4.1 文件管理器预览集成import{PreviewUtil,ToastUtil}frompura/harmony-utils;functionopenFileWithPreview(filePath:string):void{if(!PreviewUtil.canPreview(filePath)){ToastUtil.showToast(该文件类型不支持预览);return;}PreviewUtil.openPreview(filePath);}4.2 文件类型图标映射functiongetFileIcon(path:string):string{lettypePreviewUtil.getFileType(path);leticonMap:Recordstring,string{pdf:,doc:,xls:,ppt:️,image:️,text:};returniconMap[type]||;}五、注意事项文件路径需使用有效的文件路径权限要求预览文件需要文件读取权限系统支持预览依赖系统预览能力初始化依赖使用前需确保AppUtil.init()已调用大文件大文件预览可能耗时六、常见问题Q1: canPreview()返回false可能是文件类型不支持预览或系统未安装对应的预览应用。Q2: openPreview()没有反应检查文件路径是否正确文件是否存在以及是否有读取权限。Q3: 支持预览哪些文件格式支持PDF、Office文档、图片、文本等常见格式具体取决于系统预览能力。Q4: 如何自定义预览界面PreviewUtil使用系统预览能力如需自定义预览界面需自行实现。总结PreviewUtil的文件预览方法为办公类应用提供了便捷的文档预览能力。本文详细介绍了核心API、使用步骤、完整示例、进阶用法以及常见问题的解决方案。开发者可以利用这些方法快速实现文件预览功能。本文基于pura/harmony-utils工具库更多功能请参考官方文档与后续系列文章。

相关新闻

C++多线程性能优化实战:从锁竞争、伪共享到无锁编程

C++多线程性能优化实战:从锁竞争、伪共享到无锁编程

1. 项目概述:为什么C多线程性能优化是硬核程序员的必修课如果你已经能用C的std::thread或std::async写出一个能跑起来的多线程程序,恭喜你,你已经跨过了第一道门槛。但接下来,你可能会遇到一些令人困惑的现象:程序加了…

2026/10/15 9:48:05 阅读更多 →
短视频+AI如何破解聊城企业获客难题

短视频+AI如何破解聊城企业获客难题

1. 聊城企业获客现状与痛点分析聊城作为山东省重要的工业城市,拥有机械制造、化工、纺织等传统优势产业。近年来随着数字化转型浪潮,当地企业普遍面临获客成本攀升、传统渠道效果下降的困境。根据我对30家当地企业的调研,主要存在以下三类典型…

2026/10/2 9:52:33 阅读更多 →
Unity游戏AI开发:基于NavMeshAgent与状态机实现NPC巡逻追踪系统

Unity游戏AI开发:基于NavMeshAgent与状态机实现NPC巡逻追踪系统

1. 项目概述:从“木桩”到“猎手”的AI进化在独立游戏开发或者任何带有NPC(非玩家角色)的游戏项目中,最让玩家出戏的莫过于那些行为呆板的敌人。你走过去,它没反应;你开枪了,它还在原地“思考人…

2026/9/30 16:54:39 阅读更多 →

最新新闻

威利普LED-ECS免安版V5.3配置指南:从解压到屏体显示

威利普LED-ECS免安版V5.3配置指南:从解压到屏体显示

简介:威利普LED-ECS编辑控制系统V5.3免安版面向LED图文控制卡用户,提供一站式显示内容编辑与播放控制方案,适合广告公司、企业及个人快速搭建和维护LED屏。免安装特性显著,解压后即可运行,节省部署时间且减少系统感染风…

2026/10/15 13:50:26 阅读更多 →
FastAPI与SQLAlchemy多对多关系实战:从建表到添加记录的完整指南

FastAPI与SQLAlchemy多对多关系实战:从建表到添加记录的完整指南

FastAPI系列写到了第21篇,今天这篇聊一聊ORM里最容易被绕晕的一个环节——多对多关系的添加记录。有朋友留言说一对多关系还能勉强应付,一到多对多就不知道数据到底该往哪个表里塞,尤其是通过ORM操作时总报出各种莫名奇妙的错误。这篇文章我就…

2026/10/15 13:50:26 阅读更多 →
Windows Server 2012 R2 离线安装 .NET 3.5:SXS 源匹配与 DISM 实战

Windows Server 2012 R2 离线安装 .NET 3.5:SXS 源匹配与 DISM 实战

简介:这份资源是面向 Windows Server 2012 R2 系统管理员与运维人员的 .NET Framework 3.5 离线安装 SXS 文件包,用于解决服务器默认镜像未内置该框架、在无外网或带宽受限环境下无法通过服务器管理器直接启用 NetFX3 功能的问题。压缩包共收录 1568 个文…

2026/10/15 13:50:26 阅读更多 →
Obra Superpowers实战:用Java为团队打造统一的AI代码助手与自动化平台(含源码)

Obra Superpowers实战:用Java为团队打造统一的AI代码助手与自动化平台(含源码)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 13:50:26 阅读更多 →
电力电子技术课后答案避坑指南:从波形推导到Python验证

电力电子技术课后答案避坑指南:从波形推导到Python验证

简介:这份资源是《电力电子技术》第五版(王兆安、刘进军主编)的课后习题详细答案,面向正在学习该课程的本科生、备战考研或期末考试的考生,以及需要快速核对习题思路的自学者。内容覆盖电力电子器件、整流电路、PWM技术…

2026/10/15 13:50:26 阅读更多 →
openrig:Node.js+tmux搭建本地AI编码环境与多模型切换

openrig:Node.js+tmux搭建本地AI编码环境与多模型切换

1. 从“openrig”说起:一个被低估的本地AI编码环境搭建思路 第一次看到“openrig”这个词,我下意识地把它拆成了“open”和“rig”两部分。在开发者的语境里,“rig”通常指一套组装好的设备或环境配置,比如“mining rig”是矿机&a…

2026/10/15 13:49:24 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →