VSCode本身不支持直接打开或转换PDF/CHM/EPUB等离线文档为Markdown,因其仅为文本编辑器,无内置解析能力;所有“离线转换”均依赖外部工具链(如pandoc、pdftotext)预处理为HTML或纯文本后,再转为Markdown。

VSCode 本身不支持直接打开或转换离线文档(如本地 HTML、PDF、CHM、EPUB 等)为 Markdown,必须依赖外部工具链或预处理步骤。没有“一键离线转 Markdown”功能,所有看似“离线”的转换,本质都是调用本地命令行工具(如 Pandoc)或运行 Node.js 脚本。
为什么 VSCode 打不开本地 HTML/PDF/CHM 并转成 Markdown
VSCode 是文本编辑器,不是文档解析器。它能直接编辑 .md、.html、.txt 这类纯文本格式,但对二进制或封装格式(PDF、CHM、EPUB)完全不可读——连内容都打不开,更别说转换。
-
file://协议打开的本地 HTML 文件,VSCode 只当普通代码展示,不会渲染;它不带浏览器引擎,也不执行 JS,所以无法提取渲染后的内容 - PDF 是二进制流+字体+矢量图混合格式,VSCode 没有内置 PDF 解析能力;即使装了插件,也得靠
pdf2text或pdftotext这类 CLI 工具先抽文字 - CHM 是 Windows 专有压缩格式,需用
extract_chmLib或7z先解包成 HTML,再走 HTML → Markdown 流程
pandoc 是离线转换 HTML/DOCX 的实际主力
几乎所有靠谱的 VSCode 插件(如 Office to Markdown、Pandoc Markdown Converter)背后都调用 pandoc。它不联网,纯本地运行,但必须提前安装并加入系统 PATH。
通过 jina.ai 将网页抓取为精简的 markdown,用于在需要获取 URL 并获取压缩的 markdown 内容以节省 token。触发词 l...
- 转换 HTML 到 Markdown:
pandoc input.html -o output.md --wrap=none - 转换 DOCX(含格式保留):
pandoc input.docx -o output.md --extract-media=./images - 若 HTML 含内联样式或 JS 渲染内容,
pandoc只处理原始 HTML 标签,不会执行 JS;想提取“页面最终显示内容”,得先用 Puppeteer 或 Playwright 渲染成静态 HTML,再喂给pandoc - 不推荐用
markdown-pdf反向逆推:它是从 Markdown → PDF,不能反向解析 PDF
PDF/CHM/EPUB 这类真·离线文档怎么处理
没有通用插件能一步到位。必须拆成两步:先解构成纯文本或 HTML,再转 Markdown。
- PDF → 文本:
pdftotext -layout input.pdf output.txt(来自 poppler 工具集),然后手动清理或写脚本把段落转成## 标题、- 列表等 - PDF → HTML(保留结构):
pdf2htmlEX input.pdf output.html(效果比 pdftotext 好,但对扫描件无效) - CHM → HTML:
7z x input.chm -o./chm_extract,然后批量处理解压出的.htm文件 - EPUB → HTML:
ebook-convert input.epub output.html(需安装 Calibre CLI) - 所有产出的 HTML 都可统一交给
pandoc转 Markdown,但表格、图片路径、锚点链接大概率丢失,需后续补全
别被“离线插件”误导:检查它到底调用了什么
很多 VSCode 插件声称“支持离线转换”,实际只是封装了命令行调用。如果没装 pandoc 或对应 CLI 工具,插件右键菜单会灰掉或报错 Command 'xxx' not found。
- 打开 VSCode 终端(
Ctrl+`),输入pandoc --version,有输出才说明装好了 - 插件设置里常有
pandocPath选项,填绝对路径(如/usr/local/bin/pandoc或C:\Users\XXX\pandoc\pandoc.exe)才能生效 - 某些插件(如
Markdown Preview Enhanced)自带简易 HTML → MD 转换,但只适用于简单结构,遇到嵌套列表或复杂表格就崩 - 真正“零依赖”的 VSCode 原生命令(如
Insert Code Block)只处理当前编辑器里的纯文本,对文件系统里的离线文档完全无感
最易被忽略的一点:所谓“离线文档”,往往隐含编码问题(如 GBK 编码的 HTML)、路径空格、相对资源链接失效等细节。这些不会报错,但会导致生成的 Markdown 中文乱码、图片不显示、目录层级错乱——必须在转换前确认源文件编码,并用 --from=html+smart 或 --encoding=utf-8 显式指定。

















