更新记录

1.0.0(2026-08-25)

  • 首次发布 DOCX 预览解析插件。
  • 新增 parseDocx,支持 .docx.docm 文件。
  • 支持 Android 和 iOS:HBuilderX 5.15+、Android API 24+、iOS 13+。
  • 返回自包含的 HTML 和文档结构信息,依赖 hans-office-core

平台兼容性

uni-app(5.24)

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

uni-app x(5.24)

Chrome Safari Android iOS 鸿蒙 微信小程序
- - - -

Office 文档预览

uni-appuni-app x 的 UTS 插件,用于将 .docx.docm 文件解析为自包含的预览 HTML 和文档结构元数据。Android 和 iOS 的解析使用 hans-office-core 提供的共享原生渲染器。

使用要求

  • HBuilderX 5.15 或更高版本。
  • 当前项目已安装 hans-office-core
  • Android App:minSdk 24 或更高版本。
  • iOS App:最低支持 iOS 13.0。
  • 标准基座可以编译插件,但运行时无法加载该原生依赖。请使用 Android 自定义基座和 iOS 自定义基座,或使用包含原生产物的正式构建包。
  • Harmony、Web 和小程序端暂不支持。

安装

请将本插件和 hans-office-core 安装到 uni_moduleshans-office-core 包负责提供原生 AAR 和 iOS XCFramework。请勿将这些产物复制到本插件中,也不要在旁边安装其他版本的 hans-office-core

uni-app Vue3 使用

本插件支持普通 uni-app Vue3 项目的 App-Plus 端。页面使用普通 .vue 文件和 <script setup>,不需要使用 lang="uts"。H5、小程序和 Harmony 端不支持。

下面示例假设 demo.docx 已放在项目的 static 目录。writeOfficePreviewHtml 是宿主项目工具,用于将结果 HTML 写入 _doc 私有目录并返回可供 web-view 使用的本地 URL:

<template>
  <button @click="parseFile">解析并预览 DOCX</button>
  <web-view v-if="previewUrl" :src="previewUrl"></web-view>
</template>

<script setup>
import { ref } from 'vue'

// #ifdef APP-PLUS
import { parseDocx } from '@/uni_modules/hans-office-doc'
import { writeOfficePreviewHtml } from '@/utils/office-preview'
// #endif

const previewUrl = ref('')

function parseFile() {
  // #ifdef APP-PLUS
  const filePath = plus.io.convertLocalFileSystemURL('_www/static/demo.docx')
  parseDocx({
    filePath,
    title: 'demo.docx',
    success: async (result) => {
      try {
        const file = await writeOfficePreviewHtml(result.html, 'demo-docx.html')
        previewUrl.value = file.url
      } catch (error) {
        console.error(error)
      }
    },
    fail: (error) => {
      console.error(error.errCode, error.errMsg)
    },
  })
  // #endif
}
</script>

writeOfficePreviewHtml 不是本插件 API,也可以按业务项目的文件 API 自行实现。不要将 HTML 字符串直接作为 web-viewsrc,需要先写入本地文件。用户选择的文件也必须传入 App-Plus 可读取的本地路径。

API

import { parseDocx } from '@/uni_modules/hans-office-doc'

parseDocx({
  filePath: `${uni.env.USER_DATA_PATH}/demo.docx`,
  title: 'demo.docx',
  success: (res) => {
    console.log(res.title, res.headingCount, res.warningCount, res.html.length)
  },
  fail: (err) => {
    console.log(err.errCode, err.errMsg)
  },
  complete: (_) => {
    console.log('parseDocx complete')
  },
})

参数

字段 必填 默认值 说明
filePath - 可读取的本地路径或应用沙盒内 Office 文件路径。
title 空字符串 生成文档时使用的标题。
success - 接收 HansOfficeDocParseResult
fail - 接收 HansOfficeDocFail
complete - 接收成功结果或失败对象。

filePath 可以使用 uni.env.USER_DATA_PATH 等路径。插件会在打开文件前,将路径转换为当前原生平台所需的格式。

成功结果

字段 说明
errMsg 成功时为 parseDocx:ok
title 实际使用的文档标题。
html 自包含的 HTML 字符串,不是远程 URL。
headingCount 源文档中的标题数量。
headingAnchorCount 生成的标题锚点数量。
referenceTargetCount 已解析的引用目标数量。
missingReferenceTargetCount 未找到目标的引用数量。
captionCount 题注数量。
aggregateCount 汇总字段或结果的数量。
bookmarkTargetCount 书签目标数量。
directoryTargetCount 生成的目录目标数量。
warningCount 解析器警告数量。
warnings 包含 codemessagekindsourceCode 的警告对象。
metadata 包含 fileTyperesourceModeoutlineItemCountnavigationTargetCountobjectCount

错误码

错误码 含义
9010201 filePath 为空。
9010202 原生 App 运行时上下文不可用。
9010203 找不到 DOCX 文件,或文件不可读。
9010204 解析失败,或原生结果校验失败。
9010299 当前构建目标不受支持。

渲染 HTML

返回的 HTML 会将文档资源以内嵌的 data: URL 形式包含其中。插件不提供 UI 组件、URL scheme 或展示控制栏。 普通 uni-app Vue3 请先将 HTML 写入本地文件,再通过 <web-view :src="..."> 加载,参见上面的“uni-app Vue3 使用”。 下面的 UniWebViewElement.loadData 示例仅适用于 uni-app x:

// 在初始 <web-view src="about:blank"> 加载事件之后执行。
const webview = uni.getElementById('office-preview-webview') as UniWebViewElement | null
webview?.loadData({
  data: res.html,
  baseURL: 'about:blank',
  mimeType: 'text/html',
  encoding: 'utf-8',
})

宿主应用负责 WebView 生命周期、文件创建、导航和展示样式。

限制与安全

  • 这是预览解析器,不是 Office 编辑器。
  • 不会执行 VBA 宏。
  • 解析器只读取本地文件,不会上传文档内容。
  • 除非宿主应用有明确理由,否则请保持文档 JavaScript、网络访问、文件访问和持久化存储处于禁用状态。

兼容性与问题排查

目标 状态 最低要求
Android App 支持 API 24
iOS App 支持 iOS 13.0
Harmony、Web 和小程序 不支持 -

通过内置的 hans-office-core XCFramework 和 UTS 适配器启用 iOS 插件包支持(u)。

  • 9010202 或标准基座找不到原生类:请使用自定义基座或正式构建包。
  • 9010203:确认文件存在,并且应用进程可以读取该路径。
  • 9010204 且错误信息提示版本不匹配:请同步更新 hans-office-core 和格式插件。

原生第三方许可证和声明文件由 hans-office-core 提供,必须保留。

支持

使用问题和兼容性问题,请通过插件 IM 交流群联系。

隐私、权限声明

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

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

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

暂无用户评论。