Flyfish File Viewer:206 种文件格式,一个组件就够了

做过后台系统的都知道,附件预览是个绕不开的需求。

OA 里要预览 Word 合同、知识库里要内嵌 PDF、工单系统要看 CAD 图纸、邮件归档要解析 .eml……每来一个新格式,就要翻一遍 GitHub 找个能用的库,然后拼凑进项目。

最后页面长什么样?每个文件一种预览方式,跳来跳去,体验割裂得不行。

Flyfish File Viewer 就是冲着这个问题来的。


它是干什么的?

一句话:纯前端的文件预览组件,支持 206 种扩展名,24 条预览链路。

给一个文件 URL,它自动识别格式、加载对应的渲染引擎,在浏览器里打开给你看。PDF、Word、Excel、PPT、CAD、压缩包、邮件、3D 模型、思维导图、代码——全在一个组件里搞定。

不需要后端转码,不需要搭 Office Server,不需要 LibreOffice 守护进程。

GitHub ⭐ 1.2k,Apache-2.0 开源。


一个组件,七个框架

最让人舒服的是它对各框架一视同仁

技术栈 npm 包
Vue 3 @file-viewer/vue3-full
Vue 2.7 @file-viewer/vue2.7-full
Vue 2.6 @file-viewer/vue2.6-full
React 18/19 @file-viewer/react-full
React 16.8/17 @file-viewer/react-legacy-full
Svelte @file-viewer/svelte-full
jQuery @file-viewer/jquery-full
Vanilla JS (Script 标签) @file-viewer/web-full(IIFE, CDN 直达)

接入方式也极其简单,以 Vue 3 为例:

JavaScript
import FileViewer from '@file-viewer/vue3-full'
createApp(App).use(FileViewer).mount('#app')

模板里直接写 “ 就行。

如果不想引入任何框架,甚至可以用 Script 标签 + Web Component:

Html

Web Component 自带 Shadow DOM 隔离宿主样式,你不用担心自己的 CSS 污染预览区域。


格式覆盖:206 个扩展名,24 条链路

说「覆盖广」不能只靠嘴。看这张表:

类别 格式
Word docx, docm, dotx, rtf, odt(.doc 走 msdoc-viewer)
Excel xlsx, xls, xlsb, csv, ods, numbers
PPT pptx, pptm, potx, ppsx, odp
PDF pdf(基于 pdfjs-dist,支持分片/分页/搜索/打印)
版式文档 ofd(国产版式)
CAD dwg, dxf, dwf, dwfx, xps
3D 模型 glb, gltf, obj, stl, ply, fbx, step, ifc 等
EDA 版图 olb, dra, gds, oas, oasis
压缩包 zip, 7z, rar, tar, gz, cab, iso, jar, apk, cbz 等
邮件 eml, msg, mbox
绘图 excalidraw, drawio, mermaid, plantuml
思维导图 xmind
电子书 epub, umd
代码/文本 md, json, ts, py, sql, sh, 代码高亮
图片 jpg, png, webp, gif, svg, psd
音视频 mp4, mp3, wav, ogg 等
结构化数据 sqlite, parquet, geojson, kml

16 大类,206 个扩展名,24 条独立的预览链路。

而且每个渲染器是按需加载的。 PDF、Office、CAD、压缩包这些重型引擎不会挤进首屏——只有当你打开对应类型的文件时,对应的 Worker/WASM 才会被异步拉下来。

你的页面不会因为引入一个预览组件而变慢。


架构设计:不止是能打开

Flyfish File Viewer 不是那种「一个文件解决所有问题」的巨无霸。

它把能力拆成了四层:

  1. Core——TypeScript 核心,格式检测、渲染编排、事件系统
  2. Renderer——独立的渲染引擎(@file-viewer/renderer-pdf@file-viewer/renderer-docx 等)
  3. Preset——预设组合(preset-lite / preset-office / preset-engineering / preset-all
  4. Full——一步全量的便捷包

想精确裁剪就装 core + renderer-pdf + preset-lite;想最快上手直接拉 *-full

预览器本身的功能也相当完整:搜索、高亮、缩放、打印、导出 HTML、下载、水印、主题切换、工具栏权限控制、生命周期钩子——都是统一 API,不因格式不同而体验分裂。


部署方式

既然是面向企业内网的,部署场景必须灵活。它支持:

  • npm 包直接集成(最推荐)
  • Docker 镜像flyfishdev/file-viewer:latest
  • GitHub Release 制品:解压 tar.gz 放到静态目录
  • 自托管 CDN:Worker/WASM/字体都可以私有化部署
  • Cloudflare Pages

甚至连 iframe 集成都有——下载官方的 iframe 包,一行 “ 就能在任何系统里用。


一个小遗憾

说点真实的。

Flyfish File Viewer 的完整源码是付费的。GitHub 仓库是公开的 npm 包和二二发版物,但要拿到完整的 TypeScript 源码进行二次开发,需要去他们的 shop 购买(目前 4.99 刀起)。

不过对于绝大多数场景——集成进内部系统、用预设能力做附件预览——npm 包的功能已经完全够用。Apache-2.0 协议也允许在保留版权的前提下商用。

如果你是企业内部要搞一个附件预览中心,或者你的 SAAS 产品需要一个「上传文件就能看」的能力,Flyfish File Viewer 可能是你花最少时间、得到最多格式覆盖的选择。


资源

最后修改: 2026年7月9日

作者

评论

发表评论

您的邮箱地址不会被公开。