Pandoc 替代方案:不能安装软件时,你有什么选择
Pandoc 是文档格式转换的事实标准——但它是一个命令行程序,仅此一点就挡住了很多人:公司电脑没有安装权限、临时借用的机器、或者只是一次性转换,犯不着为此搭一套工具链。搜「Pandoc 替代品」的人,几乎都是被这个具体的卡点逼来的,而不是嫌它转换质量不好。
这篇文章把真正的替代选项过一遍——在线转换器、mammoth、Turndown、脚本封装——还有一个常被忽略的选项:把完整的 Pandoc 引擎编译成 WebAssembly,直接跑在浏览器标签页里。你得到和 CLI 相同的 reader 和 writer,却不需要安装、不上传文件。下面每个选项都用同样三条标准衡量:格式覆盖、输出质量、以及你的文件会经历什么。
人们为什么找 Pandoc 替代品
动机非常一致:公司电脑拒绝安装未签名的可执行文件;只有一份文档要转一次,为此安装一个 Haskell 编译的二进制、再学一套命令行参数,成本不成比例;还有人就是想要拖拽式操作而不是敲终端——但这些都不代表他们想要更差的转换结果;恰恰相反,他们选择 Pandoc 正是因为被那些弄乱表格、丢失标题的幼稚转换器坑过。
所以「好的 Pandoc 替代品」的诚实定义是三件事同时成立:保留 Pandoc 的格式理解力(标题、表格、脚注、元数据),移除安装门槛,并且不引入新问题——比如把机密文档上传到第三方服务器。能同时过这三道杠的工具极少。
各替代品的真实面目
在线文档转换器是大多数人的第一个搜索结果。它们处理 Word、PDF 和少数办公格式,但对格式的理解很浅——复杂表格、脚注、基于样式的标题层级通常会退化;而且模式是上传制:文件先离开你的机器。公开的营销 PDF 无所谓;合同、研究手稿或内部报告,这就是实实在在的代价。
mammoth 是一个专注的库,把 .docx 转成干净的 HTML 或 Markdown,对 Word 文档的输出质量确实不错——但它只读一种输入格式,而且它是个库,用它意味着写脚本或找嵌入了它的工具。Turndown 正好是镜像:只做 HTML 转 Markdown,单点做得极好,其余一概不管。pypandoc 这类脚本封装严格说不算替代品——它们驱动的还是真正的 Pandoc 二进制,安装问题原封不动。
于是留下一块空白:保留 Pandoc 的广度、但去掉终端的工具。最接近填上这块空白的,就是让 Pandoc 本身在另一个运行时里跑起来。
被忽略的选项:同一个引擎,跑在浏览器里
Pandoc 可以编译成 WebAssembly。不是重新实现,也不是子集——就是那套 Haskell 代码库,交叉编译后在浏览器标签页里运行。嵌入了这个构建的网站,给你的是和 CLI 相同的 docx、odt、EPUB、LaTeX、RST、MediaWiki、DocBook、Org reader,以及相同的 Markdown、HTML 等 writer。转换质量就是 Pandoc 的质量,因为它就是 Pandoc。
代价是机械层面的而非质量层面的:50 多 MB 的引擎每个站点要下载一次(之后有缓存),每次转换跑在 Web Worker 里,超大批量任务不如 shell 循环顺手。但什么都不用装、什么都不上传,任何有现代浏览器的机器都能用——包括把你逼到这次搜索的那些锁死权限的电脑。
保住了什么,放弃了什么
保住的:完整的 reader 集(本站 14 种文档格式,外加独立布局解析引擎处理的 PDF 和 SheetJS 处理的 Excel)、带管道表和脚注的 GitHub Flavored Markdown 输出,甚至包括进阶功能——引文处理(CSL 样式)和 Lua 过滤器在浏览器版里通过虚拟文件系统完整可用。拖拽、粘贴、批量队列、ZIP 打包下载把交互体验补齐了。
放弃的:shell 级自动化(「把这个文件夹里的文件全转了」这种活,CLI 永远赢)、经 LaTeX 工具链的 PDF 输出,以及 Pandoc 几十个额外 writer 的长尾。如果你的工作流是定时脚本或静态站点构建步骤,CLI 仍是对的工具——浏览器版是给人用的,不是给流水线用的。
隐私:上传式转换器与本地执行
结构差异很简单:在线转换器在任何转换发生之前,先让你的文件到达它的服务器;浏览器版和 CLI 都在你自己的硬件上完成转换。这是否要紧完全取决于文档本身——但做决定的应该是你,而不是替你默认做决定的技术选型。
本地执行还有一个服务器承诺给不了的好处:可验证。转换时打开浏览器的 Network 面板看一眼——请求列表是空的,因为引擎是已加载的 WebAssembly 二进制。没有请求要审计,没有保留策略要信任,没有 GDPR 问题要问。
按场景选型
在一台装不了任何东西的电脑上,把 Word 归档迁移进 Obsidian、Logseq 或 wiki:浏览器版 Pandoc 就是直接答案——docx 进,干净的 GFM Markdown 出,图片随 .md 一起提取。EPUB、LaTeX、RST、MediaWiki 来源的一次性转换:同样选它,因为几乎没有替代品认识这些格式。
作为构建流程的一部分批量转换成百上千个文件:装 CLI、写脚本、完事——没有任何浏览器工具能和一个 for 循环竞争。扫描版或纯图片 PDF:无论选谁,确认它带 OCR,因为文本层转换器读不了像素。还有政策禁止上传的机密文档:两种口味的本地执行任选,唯独不要用上传式网站。