Markdown 转 PDF — 在浏览器中将 Markdown 渲染为 PDF
将 Markdown 转换为 PDF。粘贴文本或拖入 .md 文件,无上传、无账号,全部在浏览器中运行。
Markdown 转 PDF 处在一个尴尬的位置:Markdown 是「需要被渲染」的写作的通用语言(README、博客文章、内部文档),PDF 是「需要被打印」的写作的通用语言。在两者之间转换是技术写作中最常见的琐事之一,而这种转换以同一种方式坏掉了十五年。
历史原因是 Markdown 和 PDF 在版式上存在分歧。Markdown 是一连串的块 —— 由读者来决定每个块在页面上的位置。PDF 是按精确坐标排列的字形列表 —— 由生成者来决定。一个「好的」Markdown 转 PDF 转换器必须做出 Markdown 没有规定的一千个小版式决策,结果要么是忠实但呈现不同,要么是好看但不符合 Markdown 原文。本页中的工具是诚实的版本,选择前者:它不试图模仿你的 Markdown 编辑器,而是试图生成一份忠实于 Markdown 内容的可读 PDF。
如果需要更丰富的输出,自然的下一步是 Markdown → HTML → PDF 流水线,使用真正的版式引擎(Chromium 的 headless、WeasyPrint 或 Prince)。这些工具产出更精美的输出,但要么需要服务器,要么需要繁重的本地安装。这个权衡值得说清楚:本工具是纯浏览器选项,100 ms 内运行,零依赖,产出一份可读但未样式化的 PDF。如果输出要打印并装订成册,它能胜任。如果输出是面向客户的报告,专门的 HTML 转 PDF 工具才是正确的选择。
使用方法
粘贴或拖入 Markdown
在文本框中输入 Markdown,或使用文件选择器加载 .md、.markdown 或 .txt 文件。编辑器会保留你的输入,直到你重置。
点击转换为 PDF
转换器逐块处理 Markdown —— 标题、段落、列表、代码、引用块、分割线 —— 并按需将每一块重新排版到新页面上。
下载 PDF
输出是一个以源文件命名的单一 PDF。下载按钮上方会显示页数和最终文件大小。
常见问题
支持哪些 Markdown 特性?
支持标题(h1–h4)、段落、有序和无序列表、围栏代码块、引用块和分割线。行内格式(粗体、斜体、链接)被简化为纯文本 —— 视觉强调只能通过块级结构来保留。
会渲染图片和表格吗?
不会。输出仅包含文本 —— 图片语法被简化为 alt 文本,管道表格会被丢弃。如果需要更丰富的输出,请使用 HTML 转 PDF 工具。
为什么所有标题都使用 Times Roman?
PDF 由 pdf-lib 生成,它嵌入了标准 PDF 字体(Times、Courier、Helvetica)。自定义 web 字体会让文件体积膨胀;标准字体集可移植性好,在每个阅读器中渲染效果一致。
能选择不同的页面尺寸吗?
页面默认是 A4(595 x 842 pt)。自定义页面尺寸、边距和字体大小在源码中暴露,方便针对特定打印任务调整输出。
有大小限制吗?
唯一的限制是浏览器标签页的内存。非常长的文档(50,000+ 词)可能需要几秒来渲染,因为 pdf-lib 需要逐行排版。
限制说明
- 无语法高亮代码块使用等宽 Courier 渲染,无 token 着色。如果颜色很重要,粘贴前先高亮代码,或在 DOCX 转 PDF 流程中使用代码截图。
- 行内格式被剥离粗体、斜体、删除线和行内代码全部渲染为纯文本。信息被保留,视觉强调则没有。
- 不支持图片、表格、脚注图片语法被简化为 alt 文本,表格行被丢弃。脚注、定义列表以及其他扩展 Markdown 特性也受相同限制。
- 单栏布局每行按页面宽度换行。多栏源文档会折叠为一个宽栏,在窄视窗上可能看起来被拉宽。
平台说明
- macOS
- Preview 和 Quick Look 能正确渲染输出。对于打印,「文件 > 打印」显示页数,并在打印对话框中提供「存储为 PDF」快捷方式。
- Windows
- Adobe Acrobat Reader、Edge 和 Chrome 都能打开该文件。Microsoft Print to PDF 是编辑后重新打印的最简便方式。
- Linux
- Evince、Okular 和 Firefox 内置的 PDF 阅读器都能渲染输出。对于命令行批量转换,使用以 wkhtmltopdf 为后端的 pandoc 是最接近的等价方案。
- Web
- 转换器完全在客户端运行。Markdown 一直保留在浏览器标签页中,直到你点击转换;PDF 在内存中生成,并以下载 blob 形式提供。