npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@file-viewer/renderer-word

v3.2.2

Published

Standalone DOCX, DOC, and OpenDocument renderer for File Viewer; RTF parsing is an explicit opt-in capability.

Readme

@file-viewer/renderer-word

Flyfish File Viewer 的 Word / OpenDocument renderer 包。standard/full 默认承接 DOCX/DOCM/DOTX/DOTM、旧版 DOC/DOT 与 ODT/ODP;RTF 由 @file-viewer/capability-rtf 显式启用。

用法

import FileViewer from '@file-viewer/vue3'
import { wordRenderer } from '@file-viewer/renderer-word'

const options = {
  rendererMode: 'replace',
  renderers: wordRenderer,
}

也可以和其他 renderer 一起组合:

import { wordRenderer } from '@file-viewer/renderer-word'
import { pdfRenderer } from '@file-viewer/renderer-pdf'
import { presentationRenderer } from '@file-viewer/renderer-presentation'

const options = {
  rendererMode: 'replace',
  renderers: [wordRenderer, pdfRenderer, presentationRenderer],
}

官方 Demo 和完整格式矩阵可以直接使用 @file-viewer/preset-all。

能力边界

  • DOCX / DOCM / DOTX / DOTM 使用自研 @file-viewer/docx,默认 Worker 解析、连续流式阅读、目录字段缓存、异步分批渲染,并跟随 viewer 主题启用暗黑文档面。
  • DOC / DOT 使用 @file-viewer/doc,并套用 Word 风格纸张阅读面、缩放、打印和 HTML 导出适配。
  • 安装 RTF capability 后才使用 rtf.js;未安装时会显示精确 CLI 启用命令。ODT / ODP 读取 OpenDocument 包内 content.xml 做安全结构预览。
  • 继续复用 core 的统一搜索、缩放、打印、导出、生命周期和操作能力。

DOCX 的解析、分页、制表位、绘图锚点、VML 文本坐标、合并单元格边框、背景图和修订样式均由 docxjs 引擎负责。本包负责容器适配、交互与输出接入,不再对生成的文档节点做补救改写。

Word 2003 XML 按根元素及其完整命名空间识别,HTML 注释、正文中的示例或命名空间子串不会改变容器类型。未内置 JSZip 的 DOCX Worker 使用同源 HTTP(S) 或 Blob 库地址,拒绝跨源及含凭据的地址。

文本修订

options.docx.reviewMode 同时适用于 DOC 和 DOCX:all(默认)用下划线显示实际插入、用删除线显示实际删除;final 显示定稿,original 显示修订前文字。同一组件修改该参数后会更新预览,不需要重新选择文件,也不会接受、拒绝修订或重写原始文件。文本修订支持不等于完整支持 Word 审阅历史、格式修订或移动记录。

离线资产

DOCX Worker 默认读取 viewer assets 下的:

  • vendor/docx/docx.worker.js
  • vendor/docx/jszip.min.js

私有化部署时可以通过 options.docx.workerUrl 和 options.docx.workerJsZipUrl 覆盖:

const options = {
  docx: {
    workerUrl: '/file-viewer/vendor/docx/docx.worker.js',
    workerJsZipUrl: '/file-viewer/vendor/docx/jszip.min.js',
  },
}

DOCX 暗黑渲染默认由 options.theme 决定:dark 开启、light 关闭、system 跟随浏览器系统主题。需要业务固定效果时可传 options.docx.darkMode: true / false。

DOC、DOCX 与 RTF 的外部链接及 HTTP(S) 图片关系默认阻断。只有显式设置 options.docx.externalLinkPolicy: 'allow' 和 options.docx.externalResourcePolicy: 'allow' 才会启用;链接仍只接受 HTTP(S)、mailto:、tel: 和安全相对地址,未知协议与协议相对地址始终拒绝。内嵌图片、内部书签以及本地 data:/blob: 图片资源不受影响。

标准 renderer 会在挂载前净化 rtf.js 产生的 DOM。自定义 RTF 集成若直接消费 HTML,应先调用 sanitizeFileViewerRtfHtml(document, markup, options);该边界与标准挂载使用同一链接策略和 DOMPurify 配置。严格 Trusted Types CSP 需允许 file-viewer-document-sanitizer 策略名。

嵌入 HTML

使用 options.docx.renderAltChunks: false 可以完全省略 DOCX 内嵌 HTML 部件,正文与普通内嵌图片不受影响。未指定或设为 true 时保留引擎原有沙箱渲染,不会开启脚本执行、同源权限或放宽外部链接/资源策略。该选项适用于 Worker 与主线程解析,不涉及旧二进制 DOC。

迁移说明

@file-viewer/core 已不再直接依赖 @file-viewer/docx、@file-viewer/doc、rtf.js、linkedom 或 @xmldom/xmldom。需要 Word 完整预览时,请安装本包并通过 renderers 传入,或使用 @file-viewer/preset-all。

打印页面

固定分页 DOCX 按每页原始纸张尺寸输出,支持横向分节和 A4/Letter 混排。 预览缩放不改变打印尺寸;通过具名 CSS 页面规则避免额外添加外层页边距, 文档本身的页边距保持不变。流式模式仍由浏览器分页,不按固定高度裁切。 打印驱动或打印对话框中的纸张设置仍可能覆盖浏览器提供的尺寸。