html转其他格式需工具链处理:chrome命令行导出pdf最稳定;html2text适合提取纯文本但丢结构;pandoc转markdown/docx更可控,需配合sed修复和参考文档;转换本质是权衡舍弃内容。

直接用浏览器打开 .html 文件本身就是在“渲染”它,不是转换;真要转成其他格式(比如 PDF、Markdown、纯文本),得靠工具链或代码处理,没有一键通用方案。
用 chrome 命令行导出 PDF 最稳定
本地 HTML 转 PDF,最靠谱的是调用已安装的 Chrome/Edge 浏览器,不依赖第三方库,排版还原度高。
- 确保系统 PATH 中有
chrome或chromium(macOS 可用google-chrome,Windows 常为"C:Program FilesGoogleChromeApplicationchrome.exe") - 执行命令时必须加
--headless和--disable-gpu,否则会报错或卡住 - 输出路径需为绝对路径,相对路径在 headless 模式下容易失败
chrome --headless --disable-gpu --print-to-pdf="/tmp/output.pdf" file:///path/to/doc.html
html2text 提取纯文本易丢结构,但适合日志/摘要场景
如果你只需要文字内容(比如把网页新闻转成可搜索的 txt),html2text 是轻量选择,但它会忽略所有样式、表格对齐、图片 alt 文本以外的信息。
- Python 用户装
pip install html2text后,ignore_links=True可去掉 URL 干扰 - 默认把换行压缩成单空格,要用
body_width=0关闭自动折行 - 遇到 JS 渲染的内容(如 SPA 页面)完全无效,它只处理静态 HTML 字符串
import html2text
h = html2text.HTML2Text()
h.ignore_links = True
h.body_width = 0
with open("input.html") as f:
print(h.handle(f.read()))
转 Markdown 推荐 sed + pandoc 组合,别信在线转换器
很多在线工具把 <div class="content"> 直接扔掉,或把嵌套列表转成乱码。真正可控的方式是先用 <code>pandoc 做主干转换,再用 sed 修常见坑。
立即学习“前端免费学习笔记(深入)”;
-
pandoc input.html -o output.md会保留标题层级、链接、基础列表,但可能把<section></section>当段落、把内联style="color:red"全删光 - 用
sed -i 's/\n//g'(Linux/macOS)或gsed(macOS 需brew install gnu-sed)清理 Pandoc 插入的多余换行 - 如果原 HTML 有 MathJax 公式,
pandoc默认不识别,得加--mathml或改用--webtex
别用 Python BeautifulSoup 直接转 Word —— python-docx 不支持 HTML 解析
有人试过用 BeautifulSoup 抓标签再塞进 Document().add_paragraph(),结果表格错位、样式全无、中文换行异常。根本问题是 python-docx 是生成 Word 的底层 API,不是 HTML 渲染引擎。
- 真要导出 .docx,推荐走 Pandoc:它支持
pandoc input.html -o output.docx,能映射 CSS 类到 Word 样式(需提前写好 reference.docx) - 若 HTML 来自 CMS(如 WordPress 导出的 HTML),先用
tidy -asxhtml修复烂结构,否则 Pandoc 会解析失败 - 注意字体:Pandoc 生成的 docx 默认用 Liberation Serif,中文字体要手动在 Word 里替换,没自动 fallback
HTML 转换的本质是「舍弃什么」而不是「保留什么」——PDF 丢交互、Markdown 丢样式、DOCX 丢 JS 行为。选工具前先想清楚:你到底需要下游软件能做什么,而不是文件后缀看起来像什么。











