更新日志
这份日志记录的是当前仓库主线中,对外最值得说明的能力演进。
v2.1.25 PDF 渲染器兼容性修复
- 全仓版本、workspace 依赖和 release matrix 推进到
2.1.25。 - 修复 UMI v4 项目启动报错
Invalid regular expression flag(GitHub #98):@file-viewer/renderer-pdf改为固定使用pdfjs-dist@4.10.38,不再依赖新版 PDF.js 才需要的 JBIG2/OpenJPEG/QCMS/QuickJS wasm 辅助模块,PDF wasm 资源清单调整为可选(required: false)。 - 修复生产环境部署到二级路径(如 nginx 反代
/workspace/)时 PDF worker 路径解析错误(GitHub #99):worker、cMap、标准字体等 PDF 资源统一按document.baseURI解析,移除单独的"仅站点根目录"回退逻辑,与其他渲染器的资源路径解析行为保持一致。 - 同步刷新
pdf.worker.mjs等本地 vendor 资源与 CAD wasm 拷贝脚本。
v2.1.24 OFD 签章、DOC/PPTX 修复与打印体验
- 全仓版本、workspace 依赖和 release matrix 推进到
2.1.24。 - 修复 OFD 预览不显示电子签章(GitHub #94):恢复 SES 签章外观解析,支持 PNG/JPEG 与嵌套 OFD 印章叠加。
- 修复 DOCX 导出/打印 HTML 图片空白(GitHub #90):
blob:图片自动内联为data:URL。 - 打印链路默认携带水印;新增掩膜打印与移动端打印下拉向上展开。
- 修复
.doc内嵌 OfficeArt 图片解析(GitHub #87)与工具栏缩放按钮位移(GitHub #88)。 - 修复 PPTX Origin OLE EMF 图表渲染与空白 run 保留;DOCX 暗黑模式与远程 URL 规范化。
当前主线 OFD 电子签章预览
- 修复 OFD 预览不显示电子签章的问题(GitHub #94):恢复 SES
SignedValue签章外观解析,支持 PNG/JPEG 印章图片与嵌套 OFD 印章,并按StampAnnot边界叠加到对应页面。 - 预览路径只提取印章外观,不做国密/证书验签,单个签章失败不会阻断正文渲染;新增
seal-png.ofd/seal-ofd.ofd回归与pnpm --filter @file-viewer/renderer-ofd verify:github-94。
当前主线 DOCX/导出 HTML 图片修复
- 修复 DOCX 导出 HTML / 打印时图片空白的问题(GitHub #90):
@file-viewer/docx预览默认使用会话级blob:URL,导出克隆后在新文档中失效。 - 在 core 导出/打印统一链路把
blob:内联为可移植的data:URL,并在 adapter 导出前等待图片就绪;同一修复覆盖打印窗口与 HTML 下载。
当前主线打印水印与打印掩膜
- 打印链路默认附带当前水印样式(
print-color-adjust: exact),避免浏览器打印时丢掉水印层(GitHub #92)。 - 工具栏打印改为紧凑下拉:点击「打印」后可选「直接打印」或「掩膜打印」;掩膜打印进入拖拽黑块设计流程,确认后再打印。
- 移动端底部操作面板与浮动工具栏的打印下拉改为向上展开,避免盖住底部快捷入口或被裁切。
- 掩膜设计器通过 core 内部动态
import('./print-mask')异步加载,不打进主包;组件侧统一调用printWithMask()/printRenderedHtml({ mask }),安装组件即可开箱使用,无需用户配置@file-viewer/core/print-mask子路径 alias。 - 打印 HTML 在内容之上、水印之下叠加黑色遮盖块。
当前主线 .doc 内嵌图片解析修复
- 按 MS-DOC
PICFAndOfficeArtData/ MS-ODRAW OfficeArt BLIP 规范解析内嵌图片,不再只靠魔数扫描;修复把 OfficeArt 内嵌 PNG/JPEG 误判为image/emf或application/octet-stream,导致浏览器空白占位的问题(GitHub #87)。 - 新增 OfficeArt FBSE/BLIP 提取、DIB→BMP、压缩 EMF/WMF zlib 解压与 SVG 转换,以及 PICF 显示尺寸(
dxaGoal/dyaGoal/mx/my)应用到<img>。 - 增加
image-embedded.doc回归 fixture 与pnpm --filter @file-viewer/doc verify:github-87,锁定 PNG/JPEG 内嵌图可解析、可渲染。
当前主线工具栏缩放按钮位置修复
- 修复默认工具栏从 100% 点击“放大”后,“1:1”还原按钮精确出现在“放大”按钮原位置,导致连续点击时第二次点击变成误触发“还原”而非继续放大的问题(GitHub #88):工具栏为右对齐布局,且两个图标按钮宽度相同,原实现把“1:1”插入在“放大”按钮之后,右对齐重排会让“放大”整体左移一个按钮宽度,新按钮正好顶替上“放大”刚才的像素位置。
- 调整为“1:1”按钮插入在“放大”按钮之前,让“放大”按钮始终保持工具栏最右侧的锚点位置,显示/隐藏“1:1”不再引起它的位移;新增 DOM 顺序回归测试和真实浏览器坐标验证,锁定该行为避免回归。
当前主线 DOCX 暗黑模式适配
- DOCX 渲染引擎升级到
@file-viewer/docx@0.3.18,同步刷新vendor/docx/docx.worker.js和缓存版本参数,确保本地 Demo、web viewer 与 compat viewer 使用同一版离线 Worker。 options.theme: 'dark'会自动启用 DOCX 暗黑渲染;theme: 'light'保持浅色文档面;theme: 'system'继续跟随浏览器prefers-color-scheme。需要业务强制覆盖时可设置options.docx.darkMode: true / false。- 新增 DOCX 暗黑样式回归断言,覆盖 viewer 背景、DOCX 包裹层、文档页颜色和
color-scheme,避免暗色模式下出现白块、透明底或文字对比度异常。
v2.1.20 压缩包中文文件名与 full 资产路径修复
- 修复未声明 UTF-8 的 GBK/GB18030 ZIP 文件名乱码问题,兼容客户压缩包中中文文件名目录展示。
- 区分旧编码 ZIP 的兼容解码路径和真正的 libarchive Worker 失败,避免错误显示 “libarchive Worker 未能启动” 提示。
- Vue 3 / Vue 2.7 / Vue 2.6 full 包默认补齐
/file-viewer/下的 Archive、PDF、Office、CAD、Typst 等离线资产 URL,并保留自定义 asset base URL 能力。
当前主线官方 Demo iframe 交付包
- 新增
iframe.html作为官方 Demo 的无外壳嵌入入口,支持?url=...直接预览业务文件,也支持?from=<父页面 origin>&name=<文件名>后由父页面postMessage(Blob)传入二进制文件;原主 Demoindex.html保留同一套协议,兼容既有集成。 - 新增
file-viewer-v2-*-official-demo-iframe.tar.gzrelease artifact,包内包含官方 Demo 构建产物、iframe-example.html、README.iframe.md、iframe-manifest.json、示例文件和离线 Worker/WASM/vendor 资源,客户可直接私有化部署。 release:standard:build、release:public、verify:demo-output、verify:demo-iframe-artifact和公开仓release-manifest.json校验全部纳入该产物,避免后续发布漏带官方 iframe Demo 包。
v2.1.19 fit 适配与 Shadow DOM provider 补强
- 在
v2.1.18离线资产发布基础上继续推进全仓版本到2.1.19,确保最新源码、npm 包、公开仓、Release 资产和文档矩阵保持同一发布口径。 - core 的搜索、缩放和视图状态 provider 查找支持穿透 open ShadowRoot,Web Component / Shadow DOM 隔离模式下的工具栏、fit 和状态同步不再丢失内部 renderer provider。
- 图片、DOC 和 DOCX renderer 接入专属 fit provider,
fit:'width'、contain、scale-down等模式会基于真实图片尺寸或文档页面尺寸计算绝对缩放;图片未加载和文档暂不可测时会自动重试。 - 新增 ShadowRoot provider 回归测试,覆盖 provider 注册、查找和注销链路,避免样式隔离/组件封装后核心操作能力退化。
v2.1.18 离线资产、本地化发布与 DOCX 引擎更新
- 全仓版本、workspace 依赖和 release matrix 推进到
2.1.18;当前矩阵覆盖 52 个 npm 发布目标、16 个组件目标、27 条 smoke 渲染链、24 个 renderer pipeline、206 个扩展名和 432 个组件渲染目标。 libarchive.jsWorker / WASM 改为发布前自动从当前 lockfile 固定版本同步到 demo、component demo、web viewer、compat viewer 和 web-full 产物,release:standard:preflight会强制校验这些本地资产,压缩包运行时不再依赖外部地址。- 全仓离线运行时扫描扩展到 core、renderer、preset、组件、compat、demo public/dist 和 full IIFE async renderer 产物;默认禁止 CDN、官方域名 fallback 和第三方在线服务引用,Geo 默认公开底图作为明确例外保留。
- DOCX 渲染引擎升级到
@file-viewer/docx@0.3.17,同步刷新vendor/docx/docx.worker.js、jszip.min.js和缓存版本参数,确保 npm 包、demo、component demo、web viewer 和 web-full 都拿到同一版离线 Worker 资产。 sanitize:release-dist覆盖 public 与 dist 两类运行时资产,避免prepare-viewer或 full IIFE 构建后重新带入 Typst 字体 CDN、Chevrotain diagram CDN、Draw.io 远端 fallback 等外链标记。- Web Component / IIFE / web-full 默认走 Shadow DOM 样式隔离,框架组件可通过
options.styleIsolation:'shadow'opt-in;README、生态组件 README 和文档站同步说明 tokens、parts、hostile CSS 验证和旧 light DOM 兼容路径。
当前主线 ViewerOptions.fit 统一适配能力
ViewerOptions新增fit,支持auto、contain、cover、width、height、actual和scale-down;未传fit时继续保持各 renderer 历史首屏行为,避免轻量接入被默认策略改变fit对象形态支持{ mode, resize, padding, minScale, maxScale },其中resize默认until-interaction:首屏和容器变化自动适配,用户手动缩放、平移或恢复视图后停止覆盖用户视角- core 扩展 zoom / view-state provider 合约,新增
fitToView()controller/ref API 和fit-change事件;Web Component 支持<flyfish-file-viewer fit="width"> - PDF、图片、CAD、XMind、Geo 和 3D renderer 接入专属 fit provider,其他标准 renderer 通过通用 view-state provider 走内部 zoom provider 兜底;压缩包和邮件内嵌预览继承父级
options.fit - Demo 新增 fit 模式切换入口;显式 fit、resize、用户缩放暂停自动适配和
fitToView()主动重算纳入通用浏览器 smoke / release matrix 体系,避免长期保留一次性 issue 验证入口
当前主线工具栏定制能力
toolbar.position新增top-center,支持顶部操作栏水平居中;原有top继续保持顶部靠右,auto和bottom-right行为不变,兼容已有接入
当前主线视图状态同步能力
- 新增统一
initialViewState、view-state-change、getViewState()和applyViewState()协议,面向投屏、远端协同、双栏对比和阅读进度恢复 - 所有标准 renderer loader 自动注册通用 view-state provider,未写专属适配的格式也能记录 / 恢复 renderer、缩放和滚动比例
- PDF 提供页码、页数、缩放、旋转、滚动和导航状态;XMind、Geo、3D、CAD 追加画布 pan、地图中心、相机视角或底层视图快照等高交互状态
- 程序化恢复使用
source: 'api'/action: 'restore',并抑制中间滚动和缩放回弹事件,避免操作端和展示端互相触发 - README、中英文使用文档、快速开始和格式能力页已统一说明 view-state、真实 zoom 状态和 PPTX Worker 自托管配置,方便几轮修复后对外口径保持一致
当前主线缩放状态准确性修复
- core 的 zoom controller 会订阅 renderer provider 的异步状态变更,首屏自适应、容器 resize 和内部重排后同步抛出真实
zoom-change getOperationAvailability()/operation-availability-change会结合当前zoomState动态计算zoomIn、zoomOut、zoomReset,各生态组件和自定义工具栏不再拿到静态缩放能力- PDF、Word/DOCX、DOC 和图片预览修正首屏 fit 后的真实比例、缩放步进和 reset 状态,避免显示默认
100%或点击缩放时来回跳 - 新增
pnpm verify:zoom-state浏览器回归,覆盖 DOCX、PDF 和图片的首屏比例、内部 scale 与工具栏显示一致性
v2.1.9 OFD 资源路径解析加固
- OFD renderer 加固电子发票资源路径归一化和查找逻辑,兼容
DocumentRes、PublicRes、BaseLoc、大小写差异和缺失目录等组合场景 - 修复部分 OFD 文件读取图片资源时因路径解析失败抛出
Cannot read properties of undefined (reading 'async'),导致整份文档无法预览的问题 - 缺失或异常资源继续降级跳过,保证可解析页面主体优先展示
v2.1.8 OFD 电子发票兼容与压缩包内嵌预览修复
- OFD renderer 兼容多个并列
ofd:Fonts、ofd:DrawParams、ofd:MultiMedias资源分组,修复部分电子发票在读取图片资源时抛出Cannot read properties of undefined (reading 'format')的问题 - OFD 图片资源渲染增加缺失资源兜底,单个资源异常不会中断整份文档正文预览
- PDF renderer 默认静态
vendor/pdf/pdf.worker.mjs不存在或被网关回退成 HTML 时,会自动懒加载包内 PDF.js worker handler 兜底,修复轻量@file-viewer/vue3/@file-viewer/web+@file-viewer/preset-office接入时因未复制 viewer assets 导致Setting up fake worker failed的问题;显式options.pdf.workerUrl、Vite 插件和file-viewer-copy-assets仍优先使用真实 Worker - 压缩包预览支持隐藏/显示内部文件列表,长文件名自动省略,避免移动端和窄容器下把页面挤出视图
@file-viewer/web-fullIIFE 嵌套预览继续使用当前已安装的 renderer / preset 上下文,压缩包内 PDF、Office、图片等文件不再误判为缺失 renderer
当前主线 GitHub 曝光与长期运营资产优化
- README 首屏改为“面向企业后台、内网和私有化系统的纯前端文件预览组件”,把无需服务端转码、Demo、文档、快速开始和支持格式前置,把 206 个扩展名作为可信度证据承接
- 新增
CONTRIBUTING.md、SUPPORT.md、SECURITY.md、CODE_OF_CONDUCT.md、ROADMAP.md、根CHANGELOG.md、Issue 模板和 PR 模板,方便收集真实业务文件兼容性反馈 - 文档站新增方案对比页,克制说明 File Viewer、服务端转码和 Office Online / 云服务的适用边界
- 新增
RELEASE_TEMPLATE.md,沉淀 Release 写法、Topics、Social Preview 和版本发布节奏 - 新增 GitHub Wiki 同步链路,将完整中英文文档以 Wiki 页面保留在 GitHub,和官网文档站形成双入口
v2.1.6 Vite 插件 PDF 资产复制与移动端接入说明修复
@file-viewer/vite-plugin的依赖解析改为递归锚点发现:在 pnpm / yarn PnP 风格严格依赖场景下,即使业务只直接安装@file-viewer/react、@file-viewer/preset-office和@file-viewer/vite-plugin,插件也能从 preset 依赖链继续定位@file-viewer/renderer-pdf与pdfjs-dist,正确复制vendor/pdf/pdf.worker.mjs、CMap、WASM 和 standard fonts- 新增插件回归用例,模拟 React/Vite 项目中 renderer 只挂在 preset 依赖下的安装结构,验证
copyAssets:true能在 dev publicDir 中生成完整 PDF 离线资源 - React 快速开始补充手机浏览器、H5 WebView 与 React Native WebView 接入说明,明确容器高度、
100dvh、安全区、右下角工具栏、内部缩放 provider 和自托管 Worker/WASM 资源的推荐配置
v2.1.5 DOCX Electron 兼容与 Excel 图片滚动层级修复
- DOCX Worker 默认改为自动环境检测:HTTP/HTTPS 部署继续启用 Worker,Electron
file://、about:、data:等不安全本地协议会自动回退到主线程解析,避免本地预览长时间等待 Worker 握手;显式options.docx.worker: true / false仍拥有最高优先级 - DOCX Worker 默认超时调整为 5000ms,静态资源路径、MIME、CSP 或 WebView 不兼容时更快回退,减少用户误判为页面卡死的等待时间
- Excel / XLSX 图片浮层限制在真实单元格内容区,并为右侧/底部滚动条预留安全交互区域,修复图片覆盖表格滚动条导致滚动困难的问题
v2.1.4 文档首页专业化与 IIFE 按格式异步加载
- 文档站首页重构为能力驱动入口,首屏突出浏览器端文件预览基础设施、多格式覆盖、统一交互、模块化装配、离线资源和企业部署能力,避免只围绕快速开始展开
- 中英文文档首页同步新增核心能力区,说明高还原格式链路、按需性能策略、搜索/缩放/打印/导出/水印等统一交互,以及公网、内网、Docker、Cloudflare Pages、Release 包和私有 CDN 的交付边界
@file-viewer/web-fullIIFE 首包改为只注册 Custom Element、controller 和 lazy full preset;PDF、Word、Excel、CAD、Typst、压缩包等重型 renderer 会在命中文件类型时异步加载dist/renderers/*.iife.js- Worker、WASM、字体、PDF cMap、CAD、Typst、Archive、Docx、Excel 和 Draw.io 离线资源继续按脚本 URL 自动解析,保持 CDN 与企业自托管一致体验
v2.1.3 CDN 全量接入与生态 full 包
- 新增
@file-viewer/web-full、@file-viewer/vue3-full、@file-viewer/vue2.7-full、@file-viewer/vue2.6-full、@file-viewer/react-full、@file-viewer/react-legacy-full、@file-viewer/jquery-full和@file-viewer/svelte-full,面向“先验收完整能力,再按业务边界裁剪”的快速接入场景 @file-viewer/web-full提供 CDN / script 标签完整格式入口,IIFE 包会根据脚本地址自动定位随包分发的 Worker、WASM、字体、PDF cMap、CAD、Typst、Archive、Docx、Excel 和 Draw.io 离线资源,适合公网 CDN 与企业自托管两种模式- 保留原有轻量组件包与
preset-lite/preset-office/preset-engineering/preset-all的按需组合模式;文档和 README 前置说明“轻组件 + preset / renderer”的推荐边界,避免把 full 包误用为所有业务的默认选择 - Vanilla JS 快速开始补齐无组件命令式
mountViewer示例;Vue3、Vue2.7、Vue2.6、React、React Legacy、Svelte、jQuery 的快速开始均补齐 full 包与按需包两条路径 - 生态包校验扩展到 50 个发布目标,覆盖标准组件、完整 full 包、核心、renderer、preset、Vite 插件与历史兼容 alias;发布链路同步构建 Demo、官网、文档站、开源总仓和 npm
v2.1.2 压缩包内嵌预览、移动端 PDF 与安装口径修复
- 压缩包内嵌 PDF / Office / 图片等文件预览会清理父级压缩包的
url/streamUrl,避免内部 PDF 误读取外层.zip/.rar流导致Invalid PDF structure或Bad FCHECK in flate stream - 移动端 PDF 预览在窄屏默认收起页侧边栏并压缩工具栏高度,避免导航面板遮挡页面主体;显式
options.pdf.defaultNavigationVisible仍可覆盖默认行为 - 快速开始、生态总览和 README 将“轻组件包 + preset / renderer 格式能力层”的安装边界前置说明,明确
@file-viewer/vue3等组件包最轻,preset-all是完整 Demo / 内部全格式入口而非所有业务默认选择 - 发布前回归覆盖
archive嵌套渲染上下文、core preset 自动装配、文档构建、Demo 构建、官网构建、离线资源校验、安装体积预算和冷安装时间;vue3 + preset-all最重冷安装目标通过 - 全线生态包、Demo、文档站、官网和开源总仓同步推进到
2.1.2
v2.1.1 GitHub issue 回归修复与发布同步
@file-viewer/vite-plugin新增 preset 自动发现与默认 HTML 注入;安装@file-viewer/vue3等组件包并安装@file-viewer/preset-office/preset-engineering后,框架组件可通过autoRenderers自动获得对应预览能力,仍保留inject:false、autoRenderers:false和rendererMode:'replace'的手动控制路径- core 缺失 renderer 状态改为区分“支持矩阵内但未装配”和“真正不支持”:如
.pdf未装配时提示安装@file-viewer/preset-office或@file-viewer/renderer-pdf,避免用户误解为产品不支持该格式 - Markdown 预览自动剥离文件开头 YAML Frontmatter,避免元数据被当作正文渲染,同时保留正文中的普通分隔线
- PDF 默认 Worker、cMap、WASM 和标准字体资源改为站点根路径解析,兼容 Vite / Vue Router / React Router 等深层路由部署
- Excel / XLSX worker 将图片 drawing anchor 纳入虚拟表格尺寸计算,修复图片位于数据区下方时无法继续向下滚动的问题
- 工具栏新增
toolbar.items与toolbar.permissions,同时保留beforeOperation/toolbar.beforeOperation作为异步鉴权和确认拦截点 - 全线生态包、Demo、文档站、官网和公开总仓同步推进到
2.1.1
v2.1.0 模块化架构与文档门户专业化
- 全仓 workspace、标准组件包、renderer、preset、兼容 alias、Demo、官网和文档站版本统一推进到
2.1.0 - 对外重点明确为模块化架构:
@file-viewer/core负责底层协议和统一 API,重型格式能力进入独立 renderer,preset-lite/preset-office/preset-engineering/preset-all按产品形态组合,各生态组件保持原生体验 - README 头部补齐品牌图标、GitHub / npm / Docs / Demo / Release / Docker / License / 格式矩阵 badge,并把 Demo GIF 前置,降低用户理解成本
- README 与文档站补齐最小化引入和组合引入的详细步骤,说明
@file-viewer/vite-plugin、formats、preset、copyAssets、virtual:file-viewer-renderers、builtinRenderers:'none'和rendererMode:'replace'的推荐搭配 - 文档站首页移除嵌入 Demo 的 iframe,改为 GIF 展示、模块化接入路径和更专业的文档导览;官网
file-viewer.app改为嵌入doc.file-viewer.app,让门户和文档站关系更紧密 - 对外 npm 生态口径更新为 50 个发布目标:45 个标准组件/完整 full 包/核心/renderer/preset/工程插件包 + 5 个历史兼容 alias
当前主线 XMind、EDA 版图与表格列宽体验补齐
新增 PSD 高保真图层预览,
@file-viewer/renderer-data在命中.psd时才按需加载ag-psd,支持图层选择显隐、画布重绘、统一缩放、主题隔离和 HTML 导出边界说明新增 Mermaid / PlantUML 绘图预览,
@file-viewer/renderer-drawing在命中.mermaid/.mmd/.plantuml/.puml时才分别加载官方 Mermaid renderer、plantuml-encoder与 Panzoom;PlantUML 默认离线源码预览,需要完整服务端 SVG 时可通过options.drawing.plantumlServerUrl指向自托管服务新增 Git patch 和 Git bundle 预览,
@file-viewer/renderer-text对.patch按需加载diff2html输出左右比对,对.bundle/.bdl解析 refs、提交历史、文件树和可读 blob 内容,并在浏览器端还原常规 OFS_DELTA / REF_DELTA 对象UMD 电子书从 core 迁移到
@file-viewer/renderer-epub,与 EPUB 共用电子书 renderer 包;@file-viewer/core运行时依赖归零,pako仅在打开 UMD / Git bundle 等相关 renderer chunk 时加载支持格式矩阵更新为 206 个扩展名、24 条预览链路;Demo 新增 PSD、Mermaid、PlantUML、patch 和 git bundle 示例,Vite 插件、bundle budget、组件 README 与文档站口径同步
XMind 画布交互切换为轻量成熟的
@panzoom/panzoom,保留@ljheee/xmind-parser的 XMind 8 XML / XMind 2020+ JSON 解析链路,拖拽平移、节点起手拖拽、移动端双指缩放、滚轮锚点缩放、键盘平移、适配画布和 toolbar 状态同步由统一 Panzoom 状态驱动;浏览器 smoke 已加入真实鼠标拖拽断言@file-viewer/eda-layout新增 OASIS 可读文本夹具解析,OAS/OASIS demo 不再只是结构提示,能够在浏览器里输出 SVG 版图;真实 SEMI 二进制 OASIS 仍保持安全结构索引、可读字符串、实体候选和诊断边界,后续完整几何继续走独立 WASM/增量渲染内核路线新增
@file-viewer/renderer-presentation独立 renderer 包,基于@file-viewer/pptx提供 PPTX / PPTM / POTX / POTM / PPSX / PPSM 按需预览、缩放、打印和 HTML 导出;@file-viewer/preset-all与@file-viewer/vite-plugin已优先聚合该包,ODP 继续走 OpenDocument 兼容链路@file-viewer/core移除@file-viewer/pptx直接依赖和内置 PPTX handler,PowerPoint 完整预览统一通过@file-viewer/renderer-presentation或@file-viewer/preset-all装配,core 直接渲染依赖从 37 降到 36新增
@file-viewer/renderer-word独立 renderer 包,承接 DOCX / DOCM / DOTX / DOTM、DOC / DOT、RTF 和 ODT 预览链路;@file-viewer/core移除@file-viewer/docx、msdoc-viewer、rtf.js、linkedom和@xmldom/xmldom直接依赖,Word 完整预览统一通过@file-viewer/renderer-word或@file-viewer/preset-all装配,core 直接渲染依赖从 36 降到 31XMind 已从 core 兼容入口中彻底移出,
@file-viewer/core不再默认安装@ljheee/xmind-parser;完整脑图预览统一由@file-viewer/renderer-mindmap或@file-viewer/preset-all装配,core 直接渲染依赖从 31 降到 30地理数据已从 core 兼容入口中移出,
@file-viewer/core不再默认安装@tmcw/togeojson、shpjs、maplibre-gl和proj4;GeoJSON / KML / GPX / SHP 预览统一由@file-viewer/renderer-geo或@file-viewer/preset-all装配,core 直接渲染依赖从 30 降到 28HEIC / HEIF 转换能力已从 core 轻量图片入口中移出,
@file-viewer/core不再默认安装heic2any;普通图片仍保留浏览器原生预览,HEIC / HEIF 和完整图片链路统一由@file-viewer/renderer-image或@file-viewer/preset-all装配,core 直接渲染依赖从 28 降到 27Vue3 原生组件渲染桥接层改为按当前
options.renderers、options.rendererMode和options.builtinRenderers创建临时 renderer registry,@file-viewer/preset-all/ 独立 renderer 包会在组件路径真实生效,避免 XMind、Geo、HEIC 等已从 core 移出的格式在 Demo 中误显示“不支持”新增
@file-viewer/renderer-drawing独立 renderer 包,覆盖 Draw.io / diagrams.net 离线 viewer、Excalidraw rough.js 只读 SVG 兜底、统一缩放、打印和 HTML 导出,并由@file-viewer/preset-all与@file-viewer/vite-plugin自动聚合新增
@file-viewer/renderer-3d独立 renderer 包,基于 Three.js loaders 承接 GLTF/GLB、OBJ、STL、PLY、FBX、DAE、3DS、3MF、USD/USDZ、点云和 VTK 等 WebGL 预览,并由@file-viewer/preset-all与@file-viewer/vite-plugin自动聚合新增
@file-viewer/renderer-data独立 renderer 包,承接字体、PSD、AI/EPS、SQLite、Parquet、Avro、WASM 和 WebArchive 的安全结构预览,SQLite WASM 由@file-viewer/vite-plugin复制到离线 assets新增
@file-viewer/renderer-eda独立 renderer 包,承接 OLB、DRA、GDSII、OASIS 结构预览;标准 GDSII 可用纯前端记录解析生成 SVG 快速版图,大元素集会自动切到 WebGL canvas,OASIS / Cadence 高保真几何继续按独立 WASM 内核路线维护新增
@file-viewer/eda-layout与@file-viewer/eda-orcad两个 EDA engine package;GDSII/OASIS 版图底层能力、OrCAD/Allegro 二进制检查能力从 UI renderer 中拆出,GDSII WebGL typed-array 批次已有独立门禁,后续 OASIS WASM 或逐步 TS 移植可以独立发布、独立回归复核 XMind、GDSII/OASIS、OLB/DRA 等新增复杂格式的公开生态与 WASM/手写解析路线,明确 GDSII 是当前正式快速预览,OASIS 文本夹具可真实出图,真实二进制 OASIS/OLB/DRA 仍属于结构预览和后续独立 WASM 内核路线;同时把 XMind
pan写入 smoke matrix 显式断言,真实浏览器 smoke 已覆盖 Pointer 与真实鼠标拖拽路径按需渲染架构计划补齐为可执行路线图,明确轻 core、独立 renderer、preset 编排、Vite 插件自动装配、renderer 交付契约、core 依赖预算和终态验收门禁;新增
verify:core-dependency-budget、verify:renderer-contracts、verify:renderer-assets、verify:install-budget与verify:bundle-budget,后续以清理 core 直接重依赖和守住首屏入口体积为 2.x 主治理线支持格式矩阵保持 206 个扩展名、24 条预览链路,新增 XMind 脑图、Mermaid / PlantUML、Git patch / bundle 和 PSD 图层预览,并将 EDA 安全结构索引扩展到 GDSII / OASIS 版图文件;
brep进入 3D 工程模型入口.xmind基于@ljheee/xmind-parser离线解析 XMind 8 XML 与 XMind 2020+ JSON 包结构,支持多 sheet、节点、标签、备注、链接、标记、图片、目录树、Panzoom 拖拽平移、移动端双指缩放、适配画布、搜索、缩放、打印和 HTML 导出优化 XMind 画布平移体验,使用 Panzoom 替代脆弱的手写输入状态机,支持移动端 pinch zoom、Ctrl/Command 滚轮锚点缩放、键盘方向键平移和双击适配视图,拖拽中禁用链接命中并禁用浏览器原生拖图/拖链接,边界约束改为画布式保留可见边缘
XMind 浏览器 smoke 已增加 Pointer、节点起手、滚轮平移和真实鼠标拖拽断言
XMind 平移、目录定位和键盘方向键移动后会同步通知统一缩放 toolbar,外部
resetZoom()/getZoomState()能正确感知“已平移但比例未变化”的状态XMind 官方 Demo 样例已通过真实浏览器回归:
.xmind能由@file-viewer/renderer-mindmap正常接管,拖拽后画布 transform 发生平移变化,证明组件层 preset 装配和 renderer 内部 pan 交互同时生效;浏览器冒烟脚本也会对.xmind执行 PointerEvent 拖拽断言XMind 增加 ResizeObserver 视口适配策略:首次打开和宿主容器尺寸变化会自动适配画布,用户手动拖拽、滚轮或缩放后保留当前视角,只做安全边界校正,避免脑图在移动端、嵌入容器和响应式布局中“拖不动”或 resize 后视角丢失
代码与 Markdown 预览从 core 兼容入口中彻底移出,
@file-viewer/core不再默认安装highlight.js和marked;完整文本预览统一由@file-viewer/renderer-text或@file-viewer/preset-all装配,core 直接渲染依赖从 27 降到 25,Phase 3 依赖预算从 10 降到 8音视频预览从 core 兼容入口中彻底移出,
@file-viewer/core不再默认安装hls.js和@tonejs/midi;MP3/WAV/OGG/MIDI/MP4/WEBM/HLS 完整媒体能力统一由@file-viewer/renderer-media或@file-viewer/preset-all装配,core 直接渲染依赖从 25 降到 23,Phase 3 依赖预算从 8 降到 63D 模型与绘图预览从 core 兼容入口中彻底移出,
@file-viewer/core不再默认安装three、@excalidraw/excalidraw和roughjs;GLB/GLTF/STL/OBJ/FBX/DAE/3MF/VTK 等模型由@file-viewer/renderer-3d装配,Draw.io / Excalidraw / Mermaid / PlantUML 由@file-viewer/renderer-drawing装配,core 直接渲染依赖从 23 降到 20,Phase 3 依赖预算从 6 降到 3压缩包、邮件和 EPUB 预览从 core 兼容入口中彻底移出,
@file-viewer/core不再默认安装libarchive.js、postal-mime、@kenjiuno/msgreader和epubjs;Archive / Email / EPUB 完整能力统一由@file-viewer/renderer-archive、@file-viewer/renderer-email、@file-viewer/renderer-epub或@file-viewer/preset-all装配,core 直接运行时依赖从 20 降到 16,Phase 3 依赖预算从 3 降到 0数据资产与 EDA 预览从 core 兼容入口中彻底移出,
@file-viewer/core不再默认安装ag-psd、sql.js、hyparquet、avsc和cfb;PSD / SQLite / Parquet / Avro / OLB / DRA / GDSII / OASIS 完整能力统一由@file-viewer/renderer-data、@file-viewer/renderer-eda或@file-viewer/preset-all装配,core 直接运行时依赖从 16 降到 11,Phase 4 依赖预算归零PDF 预览从 core 兼容入口中彻底移出,
@file-viewer/core不再默认安装pdfjs-dist;PDF 页面渲染、导航、目录、搜索、缩放、打印和导出统一由@file-viewer/renderer-pdf或@file-viewer/preset-all装配,core 直接运行时依赖从 11 降到 10,Phase 2 依赖预算从 10 降到 9OFD 预览从 core 兼容入口中彻底移出,
@file-viewer/core不再默认安装jszip、ofd-xml-parser和 DLTech21/ofd.js vendor;OFD 页面渲染、缩放、打印和导出统一由@file-viewer/renderer-ofd或@file-viewer/preset-all装配,core 直接运行时依赖从 10 降到 8,Phase 2 依赖预算从 9 降到 7Typst 预览从 core 兼容入口中彻底移出,
@file-viewer/core不再默认安装@myriaddreamin/typst.ts、@myriaddreamin/typst-ts-renderer和@myriaddreamin/typst-ts-web-compiler;Typst 源文件编译、按页 SVG 渲染、缩放、打印和导出统一由@file-viewer/renderer-typst或@file-viewer/preset-all装配,core 直接运行时依赖从 8 降到 5,Phase 2 依赖预算从 7 降到 4CAD 预览从 core 兼容入口中彻底移出,
@file-viewer/core不再默认安装@flyfish-dev/cad-viewer;DWG / DXF / DWF / DWFx / XPS 完整预览统一由@file-viewer/renderer-cad或@file-viewer/preset-all装配,core 直接运行时依赖从 5 降到 4,Phase 2 依赖预算从 4 降到 3Spreadsheet 预览从 core 兼容入口中彻底移出,新增
@file-viewer/renderer-spreadsheet独立 renderer 包承接 XLSX / XLSM / XLSB / XLS / CSV / ODS / FODS / Numbers 等表格格式;@file-viewer/core不再默认安装styled-exceljs、e-virt-table和tinycolor2,完整表格能力统一由@file-viewer/renderer-spreadsheet或@file-viewer/preset-all装配,core 直接运行时依赖从 4 降到 1,Phase 2 依赖预算从 3 降到 0.gds新增标准 GDSII 记录解析、SVG 版图预览和大元素集 WebGL canvas,能够展示 structure、boundary、path、text、reference、层信息和坐标边界;.oas、.oasis文本夹具可生成 SVG 版图,真实 SEMI 二进制 OASIS 保持纯前端安全结构索引、可读字符串、实体候选、二进制线索和诊断,避免把专业 EDA 文件误当普通文本或空白二进制邮件预览迁移为
@file-viewer/renderer-email独立 renderer 包,继续支持 EML / MSG / MBOX、正文/头信息切换、附件下载和附件嵌套预览,并由@file-viewer/preset-all自动聚合OFD 预览迁移为
@file-viewer/renderer-ofd独立 renderer 包,继续基于DLTech21/ofd.js的纯前端源码链路解析和页面渲染,vendor 随包离线分发,并由@file-viewer/preset-all与@file-viewer/vite-plugin自动聚合EPUB 预览迁移为
@file-viewer/renderer-epub独立 renderer 包,继续使用epubjs提供目录、滚动阅读、章节跳转和阅读进度,并由@file-viewer/preset-all自动聚合代码与 Markdown 预览迁移为
@file-viewer/renderer-text独立 renderer 包,继续使用按语言动态加载的highlight.js和marked,并由@file-viewer/preset-all自动聚合图片预览迁移为
@file-viewer/renderer-image独立 renderer 包,普通图片继续使用浏览器原生解码,HEIC / HEIF 只在命中格式时按需加载heic2any,并由@file-viewer/preset-all自动聚合音视频预览迁移为
@file-viewer/renderer-media独立 renderer 包,MP4 / WebM / 常见音频继续使用原生控件,HLS 和 MIDI 只在命中格式时按需加载hls.js/@tonejs/midi,并由@file-viewer/preset-all自动聚合地理数据预览迁移为
@file-viewer/renderer-geo独立 renderer 包,GeoJSON 直接读取,KML / GPX 按需加载@tmcw/togeojson,SHP 按需加载shpjs,地图叠加层和 CRS 转换按需加载maplibre-gl/proj4,并由@file-viewer/preset-all自动聚合新增
@file-viewer/vite-plugin工程化入口,支持按formats自动生成virtual:file-viewer-renderers、renderer chunk 分组、缺失 renderer 提示,并复制 PDF/CAD/Typst/Archive 离线 worker/WASM/vendor 资源和部署 manifest@file-viewer/vite-plugin新增scan: true源码 hint 自动装配能力,可从fileViewerFormats/fileViewerRenderers/data-file-viewer-formats/ 上传accept声明提取格式并选择对应 renderer;新增verify:vite-plugin-auto-scan防止自动化装配链路回退新增
@file-viewer/preset-lite、@file-viewer/preset-office和@file-viewer/preset-engineering三个标准 preset 包;@file-viewer/vite-plugin支持preset: 'lite' | 'office' | 'engineering' | 'all',会导入对应@file-viewer/preset-*包,并可继续用formats补充 preset 外 renderer,兼容 pnpm 严格依赖模型verify:renderer-standalone-smoke从 PDF-only 升级为全独立 renderer plugin 门禁,使用本地 tarball 构造隔离业务项目,安装 core、Vite 插件、19 个 renderer plugin 以及本地依赖闭包,逐个验证 renderer 注册、handler 挂载、Vite selection 映射和 virtual module 不误引入无关 renderer 包标准组件 README 与开源总仓 README 新增“工程级按需 renderer 装配”双语片段,统一说明
@file-viewer/vite-plugin、virtual:file-viewer-renderers、builtinRenderers:'none'、rendererMode:'replace'、scan:true、copyAssets:true和@file-viewer/preset-all的推荐使用边界,并由verify:ecosystem-readmes纳入自动校验STEP / IGES / IFC / 3DM / BREP 等重型工程格式完成浏览器 WASM 路线调研,并新增
@file-viewer/geometry-engine独立边界包维护签名识别、推荐内核和转换说明;OpenCascade、web-ifc、rhino3dm 等重 WASM 不进入 core 首屏链路表格预览新增
options.spreadsheet.resizableColumns开关,默认关闭以保持历史交互兼容;官方 Demo 默认开启,方便客户拖拽表头边界查看被截断的长文本Demo 新增
mindmap.xmind、layout.gds、layout.oas、layout.oasis示例,并将样例选择器补充为脑图与绘图、邮件与 EDA 等更清晰分组
v2.0.11 Vanilla JS 原生组件增强版
- 全生态包版本同步推进到
2.0.11,Demo、官网、文档站、组件 README、开源总仓库和 npm 发布统一使用最新 Vanilla JS 入口 @file-viewer/web新增<flyfish-file-viewer>原生 Web Component,支持src/url、filename/name、type、size、theme、toolbar、toolbar-position、watermark、search、options等属性,并暴露完整 controller 实例方法- IIFE script 标签包会自动注册 Custom Element,同时继续暴露
window.FlyfishFileViewerWeb.mountViewer,兼顾无构建工具页面和完全命令式接入场景 - 组件 Demo 新增 Custom Element 独立页面,并把浏览器 smoke 扩展到原生元素、IIFE 自动注册、React、Vue3、jQuery、Svelte 和手写 JS 入口
- 文档站、官网首页和 README 将纯 JS 默认推荐路径更新为 Web Component,
mountViewer作为高级 controller API 保留
v2.0.10 DOCX 自研渲染引擎稳定版
- 全生态包版本同步推进到
2.0.10,Demo、组件 Demo、官网、文档站和开源总仓库统一使用当前 DOCX 主链路 @file-viewer/core继续使用自研@file-viewer/docx@0.3.12,默认 Worker 解析、连续流式阅读、目录字段缓存、异步分批渲染和离线workerUrl/workerJsZipUrl资源配置- DOCX 默认保持流式布局,避免复杂目录、长表格、制表符、样式继承和中文正式文档在视觉分页中被拆坏;需要页式效果的业务仍可显式开启
options.docx.visualPagination - 开源 README、文档站、组件 README、Demo 样例与发布产物统一以当前 DOCX 能力为准,便于客户直接升级验证
v2.0.9 生态文档与定制能力完善版本
- 文档站、README 和各生态组件 README 全量补齐实际支持的 props / options / events / controller API,覆盖 Vanilla JS / Pure Web、Vue3、Vue2.7、Vue2.6、React、React Legacy、jQuery、Svelte、core 与兼容 alias 包
- 工具栏定制能力文档化,统一说明
options.toolbar、toolbar.beforeOperation、toolbar.items、自定义按钮、隐藏默认工具栏和外部自定义工具栏的最佳实践 - 官网首页补充多框架快速接入代码切换板块,帮助用户在 Vanilla JS / Pure Web、Vue、React、Svelte、jQuery 和 core API 之间快速定位接入方式
- 生态发布口径同步刷新到
2.0.9,继续保持 core 纯 TypeScript 底座、各框架组件独立实现、离线资源随包分发和生产级 demo / 文档站 / 官网一体上线
当前主线
当前主线 DOCX 自研渲染引擎接入
- DOCX / DOCM / DOTX / DOTM 渲染切换为自研
@file-viewer/docx,默认启用 Worker ZIP/XML 解析、真实浏览器 DOM 连续流式渲染、目录字段缓存和异步分批渲染;页式预览改为options.docx.visualPagination: true显式开启 - 新增
options.docx.workerJsZipUrl,与options.docx.workerUrl一起支持完全离线部署;viewer assets 会复制vendor/docx/docx.worker.js和vendor/docx/jszip.min.js options.docx.worker默认开启,仅在 CSP 或宿主环境禁用 Worker 时需要关闭;默认超时提升到 120000ms,降低大文档误回退概率- 文档站、README、格式矩阵和纯 JS 离线接入说明同步改为
@file-viewer/docx口径
当前主线 生态接入文档全量对齐
- 新增 生态组件总览,集中说明
@file-viewer/core、@file-viewer/pptx、Vanilla JS / Pure Web、Vue3、Vue2.7、Vue2.6、React、React Legacy、jQuery、Svelte 和历史兼容包的选型边界 - 文档站导航、快速开始、Vue2/React/Pure Web 接入、组件用法、FAQ、发布分发和开发发版说明统一改为
@file-viewer/*标准包名优先 - 补齐 Svelte 组件/action、jQuery 插件、Pure Web script 标签、Core 自定义接入、离线 viewer assets 和统一 controller API 示例
- 修正 React 文档中的事件参数为标准
onEvent,并明确 React Legacy、Vue2.6、PPTX 引擎和离线资源复制流程
当前主线 全格式浏览器冒烟与静态资源稳定性修复
- 修复 3D 模型、OFD、EPUB、UMD、绘图和 CAD 等渲染器的隐藏 loading 状态在部分浏览器/CSS 组合下仍可见的问题,避免预览完成后继续显示“正在解析”
- Draw.io 默认切换为随 viewer assets 分发的官方 diagrams.net 离线 viewer,加载超时后自动切换本地 SVG 安全预览,保证
drawio/dio样例不会因 viewer 初始化卡住而长期 loading - PDF 预览新增
options.pdf.thumbnails,页面导航可切换为真实页面缩略图;缩略图使用 IntersectionObserver 按可见区域懒渲染,避免大文档一次性生成所有 canvas - PDF 视图会在页面初始化、缩放、旋转和渲染后写回传统
px页面尺寸,兼容不支持 CSSround()的 360 极速、华为浏览器等 Chromium 分支 - Typst compiler / renderer WASM 和默认字体资产改为随 viewer assets 本地分发,并新增
options.typst.fontAssetsUrl/options.typst.renderTimeoutMs;默认加载 / 编译超时提升到 180 秒,浏览器端始终走真实 SVG 预览链路,不再用源码视图冒充成功,也不再为默认字体访问公共 CDN - Cloudflare Pages 部署脚本会对超过单文件限制的 Typst compiler WASM 自动做 Brotli 预压缩并写入
_headers,补齐Content-Encoding: br、Vary: Accept-Encoding、WASM MIME 和长期缓存策略;新增pnpm verify:cloudflare-compression用于上线后验证官网、文档站、Demo 和 Typst WASM 的 Cloudflare 压缩响应 - 运行时不再提供公共 CDN 或第三方在线资源 fallback;Typst 本地 WASM 或字体目录不可用时会显示明确部署错误,Draw.io 默认走官方离线 viewer 并在异常时回退内置 SVG,适合企业内网和纯离线部署
- PDF.js worker、CMap、WASM 和 standard fonts 默认随 viewer assets 分发到
vendor/pdf/,构建脚本会同步复制并校验,避免 PDF 预览隐式访问公网静态资源 - SQLite 预览默认使用 viewer assets 中的
wasm/data/sql-wasm.wasm,构建脚本同步复制并校验 sql.js WASM,减少移动端 WebView、本地服务器和 CSP 环境下的加载不确定性 - PDF 样式注入会去除 PDF.js 内置外部图片引用,避免静态产物部署时因
images/shadow.png/loading-icon.gif缺失导致 404 或控制台噪声 - 新增全量 demo sample matrix 浏览器冒烟,逐一打开
example/下 107 个样例文件;本轮已在 dev server 和静态 dist 产物中完成真实浏览器验证
v2.0.1 架构重构与全生态 2.x 起始版本
- 全线 npm 包、workspace 依赖、Docker 镜像和开源 release 包从
2.0.1重新起步,用大版本号明确标识 core / component 架构重构带来的兼容边界变化 @file-viewer/core继续保持纯 TypeScript、框架无关的底层能力包;Vanilla JS / Pure Web、Vue3、Vue2.7、Vue2.6、React、React Legacy、jQuery、Svelte 等标准组件包只依赖 core,各自提供原生集成体验- 清理旧独立页面实现和历史过渡口径,对外文档统一强调原生组件与纯 Web API 是核心集成路径
- 开源总仓库产物命名切换为
file-viewer-v2-*,同时发布 2.x npm tarball、Demo、Component Demo、文档站静态产物和库 dist 包,避免继续暴露旧file-viewer-v3-*产物线 - 文档、README、分发说明、Docker 部署说明和生态验收清单同步刷新到 2.x 版本口径,后续新增能力都在 2.x 线上连续演进
当前主线 统一缩放工具栏
options.toolbar.zoom新增统一缩放按钮显示控制,默认开启;按钮是否真正展示仍由当前渲染链路的内部缩放 provider 决定,避免对虚拟表格、canvas、PDF 文本层和 CAD 交互做宿主级 CSS 强缩放- 组件 ref 新增
zoomIn()、zoomOut()、resetZoom()和getZoomState(),外部自定义工具栏可以通过标准 API 控制缩放;operation-availability-change同步返回zoom、zoomIn、zoomOut和zoomReset,zoom-change回传最终比例文本 - PDF、DOCX、PPTX、Excel 虚拟表格、图片、CAD、OFD、Typst、Markdown、代码和 Excalidraw / draw.io 绘图链路接入渲染器内部缩放逻辑;缩放操作同样进入
options.beforeOperation/toolbar.beforeOperation前置校验
v1.0.26 Vue3 npm 入口类型声明修复版本
- 修复
@flyfish-group/file-viewer3@1.0.25在发布前被 Demo 构建覆盖dist后,npm 包缺少dist/src/package/index.d.ts,导致 TypeScript 项目出现TS2307: Cannot find module '@flyfish-group/file-viewer3' or its corresponding type declarations的问题 - Vue3 标准组件包 使用包内
prepublishOnly发布前保护,根包只保留 monorepo 编排脚本,阻止 Demo HTML 产物误进入组件库 npm 包 - 非 scoped 包
file-viewer3同步发布1.0.26,继续作为@flyfish-group/file-viewer3的兼容 alias 使用;开源总仓库只保留一份 scoped v3 tarball,避免重复占用存储 - 支持格式矩阵补齐到 194 个扩展名、23 条预览链路,新增 RTF/ODT/ODP、MBOX、GeoJSON/KML/GPX/SHP、AVIF/ICO/HEIC/HEIF/JXL、WEBM/M3U8、MIDI、JSONC/JSON5/IPYNB/TOML/Proto/HCL/TeX/Graphviz/HTTP/Ruby/Swift/Kotlin/React 片段,以及字体、PSD、AI/EPS、SQLite、WASM、Parquet、Avro、WebArchive 等资产/数据预览入口
v1.0.25 移动端压缩包与表格体验修复版本
- Vue3 包
@flyfish-group/file-viewer3@1.0.25、Vue2 包@flyfish-group/file-viewer@1.0.25、React 包@flyfish-group/file-viewer-react@1.0.25和纯 JS 包@flyfish-group/file-viewer-web@1.0.25继续保持连续版本 - 压缩包预览迁移为
@file-viewer/renderer-archive独立 renderer,并保留 Worker 探测、初始化超时、静态 Worker/WASM 路径和 ZIP/TAR/GZIP 兼容模式;手机 WebView、本地临时服务器、MIME 或 CSP 导致libarchive.jsWorker 卡住时,会自动降级,避免一直停留在 loading options.archive新增wasmUrl和workerTimeoutMs说明;普通私有化部署不再需要写死workerUrl,只有静态目录或 WASM 路径特殊时才需要显式指定- 移动端 Excel / XLS 预览把工作表名称移到表格上方的横向可滚动标签栏,当前工作表自动滚入可见区域,解决手机上 sheet 名称藏在底部角落、需要技巧才能看到的问题
- Excel / XLS 多 sheet 场景下,工作表标签改为按内容宽度展示并横向滚动,避免按整体宽度平均压缩导致 sheet 名称完全看不清
- Excel / XLS 静态 Worker 改为显式 opt-in,默认使用同一套主线程解析器,避免本地服务器、手机 WebView、MIME 或 CSP 环境下停在 Worker 初始化阶段
- DOCX 默认采用真实浏览器 DOM 连续渲染;
docx.worker和docx.progressive保持默认开启以提升大文档响应,docx.visualPagination改为显式 opt-in,避免复杂目录、长表格、制表符和样式继承被分页拆坏 - README、文档站、React / 纯 JS 接入文档、开源 release 包和 workspace 依赖同步刷新到
1.0.25
当前主线 Demo 富样式公开样例升级
- DOCX 渲染链路下沉到
@file-viewer/core,移除 Vue3 本地 Word vendor 入口;所有标准组件包共享同一套 DOCX 页面渲染、缩放 provider、打印和 HTML 导出适配器 - DOCX Worker 保留
options.docx.workerUrl、options.docx.workerJsZipUrl与options.docx.workerTimeout兜底,静态资源不可用、CSP/MIME 不兼容或超时后由 DOCX 引擎自动回退 - CAD 渲染器保持在
@flyfish-dev/cad-viewer0.6.4,支持 DWG / DXF / DWF / DWFx / XPS 统一预览;DWG 默认通过独立 Worker 加载 LibreDWG WASM,DWF/DWFx/XPS 使用 native renderer 渲染 W2D/W3D/XPS 图形 - 构建脚本会复制
libredwg-web.js、libredwg-web.wasm、dwfv-render.wasm、dwg-worker.js和 worker 依赖 chunk 到 viewer assets 的wasm/cad/ - Demo 补充 Apache Tika
blocks_and_tables.dwf与 Autodesk 官方 Viewer 教程的House.dwfx、RobotArm1.dwfx样例,用于分别验证 DWF、DWFx/XPS、W2D/W3D native renderer 和大图纸按需加载体验 - 入口组件在挂载重型渲染器前先释放浏览器绘制帧,确保 Loading 先显示,减少用户误以为页面无响应
word.docx保持 Basel Convention 公开中文正式文档,覆盖长正文、标题层级、表格、图示、白色纸张和完整打印回归,避免默认 Demo 使用临时生成或过度病态的样例文件ppt.pptx与英文sample-presentation.pptx替换为 NASA Science 公开月球科学战略演示稿,覆盖星云封面、深色引用页、图文混排、正式页眉页脚和 20 页真实专业 PPTX 结构archive.zip与archive.tar.gz内部 DOCX 同步更新为当前公开中文 Word 样例,压缩包内继续预览时也能验证真实文档效果- 示例来源表、Demo 文档和公开样例 README 同步刷新,避免继续把 Word / PPT 误写成临时生成的 Demo 文件
当前主线 文档比对、搜索定位和 AI 友好结构增强
- 文档比对页同步滚动改为绑定真实预览滚动容器,并按 scroll ratio 同步左右滚动位置,PDF 内部滚动层、Word 外层滚动层和文本预览都走同一套逻辑
- 文档比对页搜索改为当前聚焦文档的浮层交互,配合成熟图标按钮提供关键词搜索、高亮命中、上一个 / 下一个;避免顶部工具区拥挤,也避免左右两侧同时滚动导致视线丢失
- 文档比对页继续提供行级定位;搜索、定位和文本切片结果会返回行号、页码和锚点上下文,便于业务侧做审计与溯源
- 新增
options.pdf.toolbar,可在左右比对等紧凑场景隐藏 PDF 自身页码、缩放、旋转工具栏,避免 PDF 比其他格式多一条顶部导航导致正文错位 - 新增
options.search、searchDocument()、clearDocumentSearch()、nextSearchResult()、previousSearchResult()、getSearchState()等通用搜索 API;PDF 等特殊渲染器可注册原生搜索提供器,避免通用 DOM 高亮污染文本层或 canvas - 新增
collectDocumentAnchors()、scrollToLine()、scrollToAnchor()和getDocumentTextChunks(),预览器只提供锚点、文本切片和溯源上下文,不绑定具体 AI 服务,业务侧可基于它做向量化、召回、高亮和来源定位 - 主 Demo 和文档比对 Demo 的搜索浮层统一改用成熟图标按钮,公开文档同步补充文档比对页、搜索定位、PDF 工具栏隐藏、AI 友好结构和溯源定位说明
v1.0.24 CAD native renderer 与构建产物同步版本
- Vue3 包
@flyfish-group/file-viewer3@1.0.24、Vue2 包@flyfish-group/file-viewer@1.0.24、React 包@flyfish-group/file-viewer-react@1.0.24和纯 JS 包@flyfish-group/file-viewer-web@1.0.24继续保持连续版本 - CAD 渲染器升级到
@flyfish-dev/cad-viewer@0.6.2,DWG / DXF / DWF / DWFx / XPS 统一走成熟 CAD viewer;DWF/DWFx/XPS 使用dwf-viewer@0.6.4native renderer 解析 W2D/W3D/XPS 图形 - 构建脚本新增复制
dwfv-render.wasm,与libredwg-web.js、libredwg-web.wasm、dwg-worker.js和 worker 依赖 chunk 一起进入wasm/cad/,私有化部署可通过options.cad.dwfWasmUrl覆盖路径 - 压缩包和邮件附件的嵌套预览同步识别
dwf、dwfx、xps,避免主入口支持 CAD 五类格式而附件链路覆盖不足 - Demo 图纸分组补充 Apache Tika
blocks_and_tables.dwf以及 Autodesk 官方 Viewer 教程的House.dwfx、RobotArm1.dwfx样例,便于验证 DWF、DWFx/XPS、多页结构、W2D/W3D 图形、视图适配和按需加载体验 - README、文档站、React / 纯 JS README、入口缓存策略、开源 release 包和 workspace 依赖同步刷新到
1.0.24
v1.0.22 PPTX 兼容性修复与连续发布版本
- Vue3 包
@flyfish-group/file-viewer3@1.0.22、Vue2 包@flyfish-group/file-viewer@1.0.22、React 包@flyfish-group/file-viewer-react@1.0.22和纯 JS 包@flyfish-group/file-viewer-web@1.0.22继续保持连续版本 - 修复部分客户 PPTX 无法打开的问题,兼容缺少
docProps/app.xml的演示文稿,默认按现代 Office 版本降级解析 - PPTX OpenXML 关系解析改为通用路径解析,支持 relationship 单对象 / 数组 / 缺失三种形态,并按
presentation.xml真实 slide 顺序渲染 - 增强 slide / layout / master / theme / diagram 关系读取容错,缺失可选部件时降级渲染当前页内容,不再因空指针导致整份 PPTX 白屏
- README、文档站、React / 纯 JS README、入口缓存策略、开源 release 包和 workspace 依赖同步刷新到
1.0.22
v1.0.21 Docker Hub 仓库与格式边界校准版本
- Vue3 包
@flyfish-group/file-viewer3@1.0.21、Vue2 包@flyfish-group/file-viewer@1.0.21、React 包@flyfish-group/file-viewer-react@1.0.21和纯 JS 包@flyfish-group/file-viewer-web@1.0.21继续保持连续版本 - 清理
.wps、.wpt、.et、.ett、.dps、.dpt等当前没有开箱即用浏览器渲染方案的 WPS 原生格式说明,避免用户误以为这些格式已经完整支持 - Office 模板和宏格式继续按实际可渲染链路保留,包括
dot、dotx、dotm、docm、xlt、xltx、xltm、pptm、potx、potm、ppsx、ppsm - 新增 Docker Hub 仓库创建脚本,支持用 Docker Hub API 创建
flyfishdev/file-viewer公开仓库,并在异常时输出更明确的安全诊断信息 - 文档站补全文档比对页使用说明,明确
/compare.html、left/right预置参数、内置示例、URL、本地上传、同步滚动、私有化部署路径和视觉比对边界 - 开源总仓库新增 Gitee 镜像
gitee.com/flyfish-dev/file-viewer,GitHub / Gitee 同步交付混淆构建产物、Demo、文档静态产物、示例文件和 tarball - Demo 输出校验继续覆盖
compare.html、主入口资源、viewer 资源目录和示例资源,避免上线缺少独立比对入口 - 文档站新增 Cloudflare Pages Direct Upload 脚本和
docs/public/_headers缓存策略,doc.file-viewer.app可切换到flyfish-file-viewer-docs.pages.dev以改善国内访问速度 - 新增
options.theme,支持light、dark、system;显式主题优先于浏览器prefers-color-scheme,固定浅色业务 UI 可以传light避免 Markdown、代码、Typst 等预览区域被系统暗色模式带偏 - 新增
toolbar.position,支持auto、top、bottom-right;默认auto下 PDF 通用下载/打印/HTML 操作栏会悬浮到右下角,避免和 PDF 页码、缩放、目录导航栏形成双顶部导航 - 升级 Vue、Vite、PDF.js、Axios、Marked、React 适配层等第三方依赖到当时 npm latest,并同步刷新 DOCX 构建 chunk
- DOCX 渲染关闭生产调试告警,兼容 Word 写入的
autoSpaceDN/autoSpaceDE等段落属性,避免控制台被DOCX: Unknown document elementwarning 刷屏 - README、文档站、React / 纯 JS README、入口缓存策略和 workspace 依赖同步刷新到
1.0.21
v1.0.20 Typst 直读源文件与边缘部署优化版本
- Vue3 包
@flyfish-group/file-viewer3@1.0.20、Vue2 包@flyfish-group/file-viewer@1.0.20、React 包@flyfish-group/file-viewer-react@1.0.20和纯 JS 包@flyfish-group/file-viewer-web@1.0.20统一推进到连续版本 - Typst 严格直读
.typ/.typst源文件并以轻量代码视图展示,禁止依赖 sidecar 或预编译 PDF,保证用户上传源码后即可直接查看 - PDF 远端 URL 加载链路新增渐进读取策略: 同源 PDF 默认直接交给 PDF.js 通过 URL 读取,服务端支持 Range 时自动分片加载,避免先整包下载 Blob 后才开始建页;跨域 URL 默认保持旧的兼容下载链路
- 新增
options.pdf.streaming、options.pdf.rangeChunkSize和options.pdf.withCredentials,可按业务文件服务能力控制 PDF 渐进读取、Range 分片大小和凭据策略 - 下载按钮支持 URL 源文件回退,流式 PDF 没有预下载 buffer 时也可以触发原始文件下载
- 新增 Cloudflare Pages Direct Upload 部署脚本、
wrangler.toml和_headers缓存策略,便于将 Demo 切到 Cloudflare 边缘网络并保持demo.file-viewer.app域名不变 - 新增独立文档比对入口
/compare.html,支持左右并排预览、示例选择、URL、本地上传和同步滚动,不污染主预览入口 - 新增 Dockerfile、nginx 静态运行配置和 buildx 发布脚本,发布镜像覆盖
linux/amd64与linux/arm64,用于一键部署 Demo 与比对页 - 新增 Office 模板兼容入口,覆盖
dot、dotx、dotm、docm、xlt、xltx、xltm、pptm、potx、potm、ppsx、ppsm
v1.0.19 页面尺寸感知打印与入口组件瘦身版本
- Vue3 包
@flyfish-group/file-viewer3@1.0.19、Vue2 包@flyfish-group/file-viewer@1.0.19、React 包@flyfish-group/file-viewer-react@1.0.19和纯 JS 包@flyfish-group/file-viewer-web@1.0.19统一推进到连续版本 - PDF 打印会按真实页面 CSS 尺寸生成完整高保真页图,并通过
@page size固定输出纸张大小,避免导航窗格、视口宽度或缩放状态导致页面被挤压、裁切或只打印当前页 - DOCX / DOC 打印保留白色纸张和文档页尺寸,导出窗口只包含主体页面,避免把 Demo 外壳、工具栏、滚动容器或预览缩放带入打印结果
- 新增
printStyle渲染适配器能力,PDF、DOCX、DOC 等有真实页面尺寸的格式可以按文件自身尺寸输出打印样式,后续格式可复用同一机制 - 将下载、打印、导出 HTML 的实现从
FileViewer.vue抽离到useViewerExport和导出模板 helper,入口组件回归预览状态、生命周期和操作可用性的单一职责 - 补充打印页尺寸与导出模板单测,并同步刷新文档站、README、Demo 示例版本、开源 release 包和 npm 版本说明到
1.0.19
v1.0.18 公开 issue 修复与真实 PDF 示例版本
- Vue3 包
@flyfish-group/file-viewer3@1.0.18、Vue2 包@flyfish-group/file-viewer@1.0.18、React 包@flyfish-group/file-viewer-react@1.0.18和纯 JS 包@flyfish-group/file-viewer-web@1.0.18统一推进到连续版本 - 修复 GitHub issue #13: PDF 旋转页与导航配置兼容性增强,新增
options.pdf.navigation和options.pdf.defaultNavigationVisible,继续保持页侧边栏 / 树形目录侧边栏切换 - 修复 GitHub issue #9 与 #8: Excel 自动文本色更可靠,支持 workbook drawing 图片渲染,并按渲染链路隐藏不可靠的打印 / 导出入口
- 修复 GitHub issue #4:
.doc表格布局和单元格可读性增强,老 Word 文档在白色纸张容器里更接近实际阅读效果 - 修复 GitHub issue #1:
.doc的msdoc-viewerCFB 局部 sector 容错改为包管理器无关的scripts/patch-msdoc-viewer.mjs,npm / pnpm / yarn 安装后都可在构建前自动应用 - Demo PDF 替换为项目方提供的 13 页《PDF沉浸式翻译技术说明》,用于验证长文档阅读、缩放、页导航、树形目录、完整打印和 HTML 导出
- 文档站、README、集成说明、示例来源、开源 release 包和 npm 版本说明同步刷新到
1.0.18
v1.0.17 打印能力矩阵与完整页打印版本
- Vue3 包
@flyfish-group/file-viewer3@1.0.17、Vue2 包@flyfish-group/file-viewer@1.0.17、React 包@flyfish-group/file-viewer-react@1.0.17和纯 JS 包@flyfish-group/file-viewer-web@1.0.17统一推进到连续版本 - PDF 导航窗格继续完善“页面 / 目录”切换,目录模式支持树形层级、展开折叠和定位跳转,便于用户在长文档中快速预览
- Word、DOC 和 PDF 预览统一增强打印 / HTML 导出,专属导出适配器会移除预览缩放、滚动容器和 Demo 全局布局样式,避免只打印一页或页面被截断
- 新增打印能力动态判断,表格、压缩包、邮件、EPUB、音视频、3D 等不适合直接打印的渲染链路会自动隐藏打印按钮,避免用户进入错误打印流程
- 优化 Demo 暗色模式和 Markdown 阅读面,Markdown / 代码跟随系统主题,PDF / Word / Excel 等原始版式内容保持独立显示;同时替换更丰富的 DOCX / PDF / Markdown 示例并同步压缩包样例
- 新增文档加载、卸载生命周期钩子,以及下载、打印、导出 HTML 的按钮前置校验钩子,历史适配层同步透出事件和操作能力变化
- 文档站、README、集成说明、分发说明和开源 release 包说明同步刷新到
1.0.17
v1.0.15 预览交互、打印与集成钩子增强版本
- PDF 导航窗格新增“页面 / 目录”切换,目录模式会读取 PDF 大纲并以可展开树形结构跳转,页面模式继续保留页侧边栏
- 增强 Word 和通用文档打印导出,
.docx/.doc会使用专属导出适配器清理预览缩放、绝对定位和滚动容器,避免只打印一页或页面被截断 - 新增
options.hooks生命周期钩子,覆盖文档开始加载、加载完成、开始卸载和卸载完成,并提供文件类型、文件名、来源、URL、大小、版本和耗时上下文 - 新增
options.beforeOperation与 toolbar 级前置操作钩子,下载、打印、导出 HTML 前都可以返回false取消,便于接入权限校验、审计确认和业务二次弹窗 - React / 纯 JS 适配层新增 viewer 事件监听入口,基线预览器会向宿主同步生命周期和操作事件
- 文档、README 和四条 npm 包线版本说明同步刷新到
1.0.15
v1.0.14 最新发布与文档站同步版本
- Vue3 包
@flyfish-group/file-viewer3@1.0.14、Vue2 包@flyfish-group/file-viewer@1.0.14、React 包@flyfish-group/file-viewer-react@1.0.14和纯 JS 包@flyfish-group/file-viewer-web@1.0.14统一抬升到最新版本 - 文档站首页、快速开始、分发说明、支持格式页和 README 中的安装示例同步刷新到
1.0.14 - 开源总仓库、Demo 静态产物和文档站静态产物重新构建,方便直接下载和验收
- 继续保持 Vue3 / Vue2 / React / 纯 JS 的集成路径、按需异步加载、示例分组和 PDF / OFD / 压缩包 / 邮件 / CAD / 绘图 / 电子书预览链路一致
v1.0.12 完整格式、分发仓库与 npm 同步版本
- Vue3 包
@flyfish-group/file-viewer3@1.0.12、Vue2 包@flyfish-group/file-viewer@1.0.12、React 包@flyfish-group/file-viewer-react@1.0.12和纯 JS 包@flyfish-group/file-viewer-web@1.0.12统一对齐到 npmlatest - 新增压缩包预览,基于
libarchive.jsWorker 支持 ZIP、7z、RAR、TAR、GZIP、BZIP2、XZ、CAB、ISO、JAR、APK、CBZ/CBR 等入口,内部文件按需解压、IndexedDB 缓存并继续调用统一预览器 - 新增 EML / MSG 邮件预览,支持头信息、HTML/文本正文、附件下载和附件继续在线预览
- 增强 OLB / DRA 结构预览,基于
cfb解析常见 EDA 复合文档容器,并提供结构树、元件/封装/Padstack 候选、属性、诊断、二进制退化和可读字符串索引 - 预览器新增
options.watermark、options.toolbar和options.archive,支持文字/图片水印、下载原文件、完整打印、导出渲染后 HTML、压缩包 worker 和体积限制配置 - 修复 PDF 打印和导出 HTML 的完整性,PDF 会通过专属导出适配器逐页生成全部页面,不再依赖当前滚动视口、当前页或已渲染 canvas,避免只打印当前页或内容被截断
- DWG 入口从单纯提示转换为尽力展示: 误命名 DXF 会直接按 DXF 解析,真实 DWG 会尝试提取内嵌 PNG/JPEG/BMP 预览图,并说明无法完整解析几何的原因
- 新增 Three.js 3D 模型预览器,支持
glb、gltf、obj、stl、ply、fbx、dae、3ds、3mf、amf、usd、usda、usdc、usdz、kmz、pcd、wrl、vrml、xyz、vtk、vtp;step、stp、iges、igs、ifc、3dm会给出转换原因和建议 - Demo 新增 GLTF / OBJ / STL / PLY / STEP 3D 样例,以及 ZIP、TAR.GZ、EML、MSG、OLB、DRA 样例,支持格式矩阵更新到 135 个扩展名、19 条预览链路
- 文档站全局导航、首页、格式矩阵、分发说明、快速开始和 npm README 均刷新到
1.0.12 - 开源总仓库已升级为一站式主入口,保留可运行源码、Demo 静态站、文档静态站、样例文件和 release tarball
- React / 纯 JS 文档继续推荐
npm install零步骤安装,并补充 pnpm 10 拦截postinstall时的pnpm approve-builds/pnpm exec file-viewer-copy-assets处理方式
v1.0.9 媒体、绘图与电子书预览增强版本
- Vue3 包
@flyfish-group/file-viewer3@1.0.9和 Vue2 包@flyfish-group/file-viewer@1.0.9同步发布到 npmlatest - 新增 React 包
@flyfish-group/file-viewer-react@1.0.9和纯 JS 包@flyfish-group/file-viewer-web@1.0.9,复用 Vue3 基线资源 - 新增原生 组件 Demo,覆盖 React 组件和纯 JS helper 两种入口,构建后可直接作为私有化静态站点部署
- 增强 PPTX 渲染,补齐组合图形坐标映射、旋转/翻转、主题背景、图片裁剪和 EMF 转 SVG 预览
- 新增
.epub预览,使用epubjs按需解析 EPUB 包、目录和滚动阅读,并避开部分浏览器超宽分页白板问题 - 新增
.umd电子书预览,按 UMD 文件结构解析元数据、章节目录和 zlib 压缩正文 - 新增
.mp3、.mpeg、.wav、.ogg、.oga、.opus、.m4a、.aac、.flac、.weba音频入口,使用浏览器原生播放器 - 新增
.excalidraw预览,默认使用 rough.js 按需生成只读 SVG,运行环境提供官方 Excalidraw ESM 模块时可优先尝试exportToSvg - 新增
.drawio/.dio预览,默认使用随 viewer assets 分发的官方 diagrams.netGraphViewer离线处理 mxGraphModel / mxfile;也可通过options.drawing.viewerScriptUrl覆盖自托管脚本,异常时回退内置 SVG - 补充 Demo 示例文件、格式矩阵、FAQ 和接入说明
v1.0.8 文档视觉与预览稳定性版本
- Vue3 包
@flyfish-group/file-viewer3@1.0.8和 Vue2 包@flyfish-group/file-viewer@1.0.8同步发布到 npmlatest - 修复 PDF worker 生命周期,快速切换 PDF / OFD / PDF 时不再触发 worker 销毁告警
- 稳定 OFD 渲染状态,避免反复闪动“正在解析 OFD”
- 刷新文档站截图、主题配色和集成示例页视觉
v1.0.7 PDF 自适应修复版本
- Vue3 包
@flyfish-group/file-viewer3@1.0.7和 Vue2 包@flyfish-group/file-viewer@1.0.7同步发布到 npmlatest - 修复 PDF.js 5 下 canvas 布局尺寸被 DPR backing store 干扰的问题,避免 PDF 页面被裁切或显示不完整
- 修复 PDF 默认宽度适配计算,导航窗格开启时也能按当前视口宽度给出可读缩放比例
- 同步刷新线上 Demo、文档说明和开源总仓库产物
v1.0.6 开源分发版本
- Vue3 包
@flyfish-group/file-viewer3@1.0.6和 Vue2 包@flyfish-group/file-viewer@1.0.6均已发布到 npmlatest - 新增 PDF 缩放工具栏、页码状态和可显隐页面导航窗格
- 补齐 OFD、CAD、代码高亮与完整示例文件盒子
- 示例文件选择器支持分组折叠,默认展开第一个分组,并保持同一时间只展开一个分组
- 增加
pnpm obfuscate与pnpm release:ecosystem:pack,库产物支持压缩混淆后分发 - README、文档站和开源总仓库说明同步补充 npm、GitHub、私有聚合仓、优先支持、授权与贡献说明
- npm tarball 只包含
README.md、LICENSE和混淆压缩后的dist/
文档站与交付说明完善
- 重写 README 与 VitePress 文档结构
- 增加 Demo 说明、本地开发与打包说明
- 补充截图、接入建议与发布前检查清单
.doc 渲染能力升级
- 使用
msdoc-viewer替换旧的.doc解析方案 - 将
.doc内容渲染在 Word 风格页面容器中 - 增加灰色工作台、白色纸张与页面居中展示效果
示例与工程体验
- 提供更清晰的本地 Demo 入口说明
- 支持将预览器独立部署并通过静态入口集成
- 本地构建、文档站构建与 npm 打包链路持续收敛
历史版本
v1.0.3
- 修复与优化 PDF 字体、缩放和 Excel 样式相关问题
更早版本
- 优化 PPTX 加载性能
- 补强 Word 与 Excel 的基础预览能力
- 持续完善 TypeScript 与 Vue 3 版本实现
