更新记录
1.0.0(2026-06-28)
1.0.0(2026-06-28)
- 首次发布
- 支持 Office文档、图片、文本、HTML 离线预览
- 支持 自定义导航栏、水印、防截屏等
- 提供
openPreview、closePreview、gotoPage、clearCache、getVersionAPI
平台兼容性
uni-app(3.8.0)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| √ | √ | × | × | √ | √ | 5.0 | 12 | - |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| - | - | - | - | - | - | - | - | - | - | - | - |
其他
| 多语言 | 暗黑模式 | 宽屏模式 |
|---|---|---|
| × | × | √ |
wg-app-preview-file
uni-app APP 端离线文件预览 UTS 插件。支持 PDF、Office(docx / xlsx / pptx)、图片、文本、HTML 的本地预览,以及 URL 下载后预览。
特性
- 真离线:本地路径直接预览,无需联网
- URL 模式:插件内下载后预览,支持缓存与 SSL 证书链异常重试
- Office 高保真:Android / iOS 均使用 WebView + 专业 JS 引擎
- 水印:文字平铺水印,可调透明度与角度(Android / iOS v1.2+)
- 防截屏:Android
FLAG_SECURE;iOS 录屏时内容模糊
平台支持
| 平台 | 支持 | 最低版本 |
|---|---|---|
| Android App | ✅ | API 21(Android 5.0) |
| iOS App | ✅ | iOS 12.0 |
| H5 / 小程序 | ❌ | — |
本插件为 UTS 原生插件,必须在 App 端 + 自定义调试基座 / 正式打包 中使用,标准基座无效。鸿蒙端敬请期待~
安装
- 从插件市场导入,或将
uni_modules/wg-app-preview-file复制到项目uni_modules目录 - 在 HBuilderX 中打开项目
- 运行 → 运行到手机或模拟器 → 制作自定义调试基座,勾选本插件
- 基座制作完成后,选择「自定义调试基座」运行到 Android / iOS 真机
快速开始
import {
openPreview,
closePreview,
gotoPage,
clearCache,
getVersion,
} from "@/uni_modules/wg-app-preview-file";
// 本地文件(推荐:先 download 再 preview)
uni.downloadFile({
url: "https://example.com/report.pdf",
success: (res) => {
openPreview({
source: { type: "path", path: res.tempFilePath },
title: "合同附件",
watermark: { text: "内部资料", opacity: 0.15, angle: -30 },
success: (result) => console.log("预览成功", result.filePath),
fail: (err) => console.error(err.errCode, err.errMsg),
});
},
});
// 持久化路径
openPreview({
source: { type: "path", path: "_doc/report.pdf" },
title: "年度报告",
targetPage: 1,
pdfBar: { show: true, textColor: "#666666" },
});
// URL 模式(插件内下载)
openPreview({
source: { type: "url", url: "https://example.com/file.docx" },
title: "在线文档",
keepCache: true,
});
API
openPreview(options)
打开全屏文件预览页。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| source | PreviewSource |
是 | 预览源,见下表 |
| title | string | 否 | 标题栏文字 |
| topBarBgColor | string | 否 | 标题栏背景色,默认 #FFFFFF |
| topBarTextColor | string | 否 | 标题栏文字色,默认 #1F2329 |
| backButtonText | string | 否 | 返回按钮文字,默认「返回」 |
| showTopBar | boolean | 否 | 是否显示顶部导航栏,默认 true |
| pdfBar | PreviewPdfBar |
否 | PDF 翻页栏样式(仅 PDF 有效) |
| watermark | PreviewWatermark |
否 | 文字水印 |
| preventCapture | boolean | 否 | 防截屏 / 录屏保护 |
| fileName | string | 否 | 辅助识别文件名(无扩展名时) |
| fileType | string | 否 | 强制指定类型,如 pdf、docx |
| targetPage | number | 否 | PDF 初始页码,从 1 开始 |
| keepCache | boolean | 否 | URL 模式是否保留缓存,默认 true |
| success | function | 否 | 成功回调 (res: PreviewResult) => void |
| fail | function | 否 | 失败回调 (err: PreviewFail) => void |
| complete | function | 否 | 完成回调 |
PreviewSource
| type | 字段 | 说明 |
|---|---|---|
path |
path: string |
本地路径,支持 _doc/、_www/、绝对路径、file:// |
url |
url: string |
网络地址,插件下载到缓存后预览 |
PreviewWatermark
| 字段 | 类型 | 说明 |
|---|---|---|
| text | string | 水印文字 |
| opacity | number | 透明度 0~1,默认 0.15 |
| angle | number | 旋转角度(度),默认 -30 |
PreviewPdfBar
| 字段 | 类型 | 说明 |
|---|---|---|
| show | boolean | 是否显示翻页栏,默认 true |
| bgColor | string | 背景色,默认半透明;可传 #66000000 |
| textColor | string | 页码文字色,默认 #8F959E |
| iconColor | string | 翻页按钮色,默认 #1F2329 |
PreviewResult
| 字段 | 类型 | 说明 |
|---|---|---|
| filePath | string | 实际预览的文件路径 |
| currentPage | number | 当前页(预留) |
| totalPages | number | 总页数(预留) |
closePreview()
关闭当前预览页。
gotoPage(page: number)
跳转到 PDF 指定页,页码从 1 开始。仅在 PDF 预览打开时有效。
clearCache(options?)
清除插件下载与 Office 预览缓存目录,返回释放的字节数。
clearCache({
success: (res) => console.log("释放", res.freedBytes, "字节"),
});
getVersion()
返回插件版本号字符串,如 "1.0.0"。
错误码
| errCode | 说明 |
|---|---|
| 9010001 | 文件不存在或无读取权限 |
| 9010002 | 格式不支持 |
| 9010003 | 文件损坏或解析失败 |
| 9010004 | 网络下载失败 |
| 9010005 | 插件未授权 |
| 9010006 | 参数无效 |
| 9010007 | 预览窗口已关闭 |
| 9010008 | 页面跳转失败(页码越界) |
支持格式
| 类型 | 扩展名 | Android | iOS |
|---|---|---|---|
| PdfRenderer + 翻页栏 | PDFKit + 翻页栏 | ||
| 图片 | jpg / jpeg / png / gif / webp / bmp | 原生 | 原生 |
| 文本 | txt / log / md / json / xml / csv / ini / yml 等 | 原生 | 原生 |
| HTML | htm / html | WebView | WKWebView |
| Word | docx | WebView 高保真 | WebView 高保真 |
| Excel | xlsx | WebView 高保真 + 图片锚点 | WebView 高保真 + 图片锚点 |
| PowerPoint | pptx | WebView 高保真 | WebView 高保真 |
| 旧版 Office | doc / xls / ppt | ❌ | QuickLook 降级 |
不支持 Office 97-2003 二进制格式(
.doc、.xls)。请转换为.docx、.xlsx、.pptx后预览。旧版.ppt在 iOS 上可能通过 QuickLook 降级预览。
离线预览最佳实践
// 1. 下载到本地
uni.downloadFile({
url: fileUrl,
success: (res) => {
// 2. 可选:持久化到 _doc
uni.saveFile({
tempFilePath: res.tempFilePath,
success: (saveRes) => {
openPreview({
source: { type: "path", path: saveRes.savedFilePath },
title: "离线文档",
});
},
fail: () => {
// 临时路径也可直接预览
openPreview({
source: { type: "path", path: res.tempFilePath },
title: "离线文档",
});
},
});
},
});
常见问题
1. 标准基座无法使用?
UTS 插件必须在 自定义调试基座 或 云打包 / 本地打包 中使用。
2. 文件打不开?
- 确认路径可读,插件已内置
_doc/、_www/等虚拟路径解析 - 无扩展名时传
fileName或fileType - 检查文件是否损坏、格式是否在支持列表内
3. Office 预览空白?
- 首次打开会将 assets 复制到缓存目录,请稍候
- 确认文件为 Open XML 格式(docx / xlsx / pptx)
- 复杂文档(大量公式、宏、嵌入对象)建议真机实测
4. URL 预览失败?
- 检查网络权限与 HTTPS 证书
- 插件会对 SSL 证书链不完整的服务器自动重试一次
- 可改用
downloadFile+path模式
5. 修改插件后如何生效?
重新 制作自定义调试基座,或重新打包正式版。

收藏人数:
购买普通授权版(
试用
使用 HBuilderX 导入示例项目
赞赏(0)
下载 1044
赞赏 1
下载 12350554
赞赏 1926
赞赏
京公网安备:11010802035340号