更新记录

1.0.0(2026-09-24) 下载此版本

zxj-pdf-preview 是一个 uni-app App 原生文件预览插件,专门处理“接口没有给下载 URL,只给了 PDF Base64 或 PDF 文件流”的情况。它负责把数据安全写入应用缓存,再交给系统能力打开,业务页面只需要传 Base64、文件名和是否显示应用选择菜单。


平台兼容性

uni-app(5.0)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
- - - - -
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
- - - - - - - - - - - -

PDF 预览器|Base64 文件流打开与分享

插件 ID:zxj-pdf-preview

PDF 文件流预览 UTS 插件,适用于接口返回 Base64 PDF 二进制流的 App 端预览场景。

zxj-pdf-preview 是一个 uni-app App 原生文件预览插件,专门处理“接口没有给下载 URL,只给了 PDF Base64 或 PDF 文件流”的情况。它负责把数据安全写入应用缓存,再交给系统能力打开,业务页面只需要传 Base64、文件名和是否显示应用选择菜单。

检索关键词: uni-app PDF 预览、UTS PDF 插件、Base64 PDF 打开、PDF 文件流预览、Android FileProvider、Android Intent 打开 PDF、iOS PDF 分享、uni-app 文件预览、报告预览、合同预览、电子发票 PDF。

适用场景

  • 企业报告、尽调报告、合同、账单、发票等 API 返回的 PDF Base64 数据。
  • 希望 Android 调起 WPS、系统阅读器或其他 PDF 应用查看文件的项目。
  • 希望 iOS 用户把临时 PDF 存储到文件、分享或交给兼容 App 打开的项目。
  • 不希望业务层维护 Android FileProvider、MIME 类型、临时文件路径的 uni-app 项目。

本插件不是 PDF 内容渲染组件:它不会在页面内把 PDF 逐页画出来,也不提供标注、搜索、编辑能力。需要内嵌阅读器时,应接入 WebView/PDF.js 或专业文档 SDK。

功能

  • 接收 Base64 PDF 文件流(NO_WRAP,不含 data: 前缀)
  • 写入应用私有缓存目录
  • Android:通过 FileProvider + 系统 Intent 打开 PDF 阅读器
  • iOS:调起系统分享面板,可交给支持 PDF 的应用处理

支持 uni-app Vue2、Vue3 的 Android/iOS App 构建。H5、小程序端请使用 uni.openDocument、浏览器新窗口或对应平台的文件 API。

工作方式与隐私边界

  1. 接收纯 Base64 PDF 字符串,解码到 App 的私有缓存目录。
  2. Android 通过 FileProvider 生成受控内容 URI,并以 application/pdf MIME 类型发起系统 Intent。
  3. iOS 弹出系统分享面板,用户自行决定存储或使用哪个应用打开。
  4. 插件不上传 PDF、不解析文档正文、不读取用户的公共文件目录。

临时文件用于交给系统应用读取。业务侧如有更严格的文档生命周期要求,可在使用完成后自行清理对应缓存目录。

使用方法

1. 直接调用 UTS API

import { previewPdfFromBase64 } from '@/uni_modules/zxj-pdf-preview'

// base64 为 PDF 二进制 NO_WRAP Base64
previewPdfFromBase64({
  base64: pdfBase64,
  fileName: '报告名称.pdf',
  showMenu: true,
  success: (res) => {
    console.log('本地路径', res.filePath)
  },
  fail: (err) => {
    uni.showToast({ title: err.errMsg, icon: 'none' })
  },
})

错误码

错误码 说明
9020001 PDF Base64 数据为空
9020002 PDF Base64 解码失败
9020003 写入本地 PDF 文件失败
9020004 打开 PDF 预览失败
9020005 Android 未找到可处理 PDF 的应用

注意

  • 需使用 HBuilderX 4.08+ 编译自定义基座或云打包后才能在 App 端生效
  • Android 若提示无可用应用,请安装 WPS 或系统 PDF 阅读器
  • iOS 会打开系统分享面板;用户可选择“存储到文件”或其他支持 PDF 的应用
  • base64 必须为 PDF 的纯 Base64,不要传入 data:application/pdf;base64, 前缀。
  • fileName 建议以 .pdf 结尾,例如 annual-report.pdf;这能帮助外部应用识别文件。

常见问题

Android 为什么提示没有可用应用?

插件只负责把 PDF 安全交给系统,不内置 PDF 阅读器。请在设备安装 WPS、Adobe Acrobat 或其他支持 PDF 的应用后重试。

接口返回的是 ArrayBuffer,能直接调用吗?

不能直接传。请先用 uni.arrayBufferToBase64(arrayBuffer) 转成 Base64,再传给 previewPdfFromBase64

showMenu 有什么区别?

设为 true 会显示“选择应用打开”的系统菜单,便于用户选择 WPS 或其他阅读器;设为 false 则直接交给系统默认处理应用。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

暂无用户评论。