人们本能地会用 Ctrl+P → 另存为PDF 来保存ChatGPT对话。感觉免费,感觉理所当然。但结果根本没法用。我们来细数一下具体原因。
在chatgpt.com上按Ctrl+P实际得到什么
打开一段很长的ChatGPT对话,按Ctrl+P,选择“另存为PDF”,确认。最后落在磁盘上的PDF文件会有:
- 侧边栏。 ChatGPT的左侧导航会印在每一页上。文档的一半都是你自己的对话历史列表,而不是你想保存的聊天内容。
- 输入框。 “发送消息……”输入框会出现在每个分页底部。
- 长消息被截断。 比视口更长的消息会在右边缘被切掉。你只看到回复的前100个字符,然后就没了。
- 代码块在函数中间断开。 分页随意发生,一个30行的函数在第17行被切开。
- 数学公式显示为原始的
$$ ... $$。 打印时不渲染KaTeX——LaTeX源码原样输出。 - 生成的图片有时损坏。 DALL-E图片以低分辨率打印;有时打印管线完全无法加载它们。
- 流式响应状态的残留。 如果你在回复还在流式输出时就打印,得到的就是半渲染的输出。
- 暗色模式浪费墨水。 如果你使用暗色模式,PDF会是白字灰黑底——能吃掉半盒打印机墨盒。
为什么Chrome无法修复这个问题
打印管线与页面内容无关。Chrome不知道聊天内容在某个特定的DOM子树中,不知道侧边栏是装饰性的,不知道输入框是UI控件。它只是捕获屏幕上的一切。
有时你可以用打印样式表(print stylesheets)来绕过最糟糕的部分——但ChatGPT并没有提供打印样式表,你需要通过用户脚本或扩展注入@media print { .sidebar { display: none } }规则。大多数用户不会这么做。
导出工具的做法有什么不同
三个要点:
- 读取对话数据,而不是渲染后的页面。 ChatGPT的网页客户端将对话存储为JS数据结构;导出工具读取的是这个结构,而不是DOM。
- 正确渲染数学公式。 在拼装PDF之前,LaTeX通过KaTeX转换为SVG。
- 把PDF当作文档来排版,而不是截图。 分页是内容感知的(不会拆分代码块),侧边栏/输入框/导航栏根本不会出现,因为它们从未被纳入输入,而且代码通过正确的渲染保持了语法高亮。
可行的流程
安装 ChatExport AI。打开ChatGPT对话。点击工具栏图标。选择PDF。点击导出。
结果:
- 没有侧边栏。
- 没有输入框。
- 数学公式排版正常。
- 代码高亮。
- 分页合理。
- 暗色模式可选,不浪费墨水。
点击次数和Ctrl+P一样多。输出是一份文档,而不是一张截图。
什么时候用Chrome的打印功能仍然没问题
静态博客文章。食谱。文章。任何不是作为动态Web应用构建的内容——Chrome的打印功能在这些场景下都工作良好。陷阱在于对动态Web应用使用同样的工具,而它并不好用。
什么时候PDF不是正确的导出格式
有时候你根本不需要PDF:
- 可编辑的手册 → Word (.docx)。
- 笔记应用 → Markdown。
- 团队知识库 → Notion。
- 管线/RAG → JSON。
根据目的地选择,而不是默认选项。
分步替代方案
导出流程的详细版本:如何打印ChatGPT对话。