指南 · 5 分钟阅读 · 更新于 2026-08-09
为什么从 PDF 复制会丢掉格式
PDF 存的是每块文字在页面上的位置,不是它的含义。复制粘贴丢的正是版式。
文件不会离开你的浏览器。
你在 PDF 里选中一段,复制,粘进文档,结果一团乱。每一行后面都有一个换行。单词之间没有空格,粘成一坨。如果是两栏的论文,左右两栏还会一句一句交错,读都读不通。
这不是你的阅读器有 bug。这是你向一个只存储外观的格式索要含义时,必然发生的事。
PDF 描述的是一幅画,不是一份文档
了解 PDF 当初是为什么设计的会有帮助。它是一种页面描述格式,目标是让文档在任何地方打印出来都一模一样。为了保证这一点,它记录精确位置:把这个字形放在这个坐标,用这个字体,这个字号。
它不记录的是结构。文件里没有任何标记说「这是一个段落」「这是一个标题」「这两块是分开的两栏」。字处理软件的文件会存这套层级;而 PDF 在写出文件的那一刻就已经把它扔了,因为打印机不需要。
所以你一复制,阅读器只能从坐标反推结构。它看位置,然后猜。有时候猜得不错。遇到带脚注和页眉的两栏排版时,通常猜不对。
三种失败模式的成因
每行后面都有换行。在 PDF 里,每一个视觉行都是一个独立定位的文字对象——两端对齐就是这么实现的。文件里没有任何信息说明哪些行属于同一段,所以把每行当成独立一行的阅读器是在照字面办事,不是敷衍。
单词粘在一起。空格字符经常根本不存储。生成器不写空格,而是把绘制位置往右推进一个空格的宽度。视觉上完全一样,但没有空格字符可供复制。阅读器必须从水平间隙的大小去推断词边界。
两栏交错。文字对象按生成器写出的顺序存储,而那个顺序常常是横跨整页从上到下,而不是先走完一栏再走下一栏。按文件顺序读,你就会在两栏之间来回跳。这就是学术 PDF 最容易出问题的原因。
正经的提取工具做了什么不一样的事
专门的提取器会做阅读器跳过的那部分重建工作。它按垂直位置排序来建立真实的阅读顺序,而不是相信文件顺序。它测量水平间隙来判断词从哪里分开。它比较行距来区分换行和真正的段落分隔。它还会检测那道指示两栏的宽垂直间隙,从而先完整读完一栏再走下一栏。
这些都不是魔法——只是把规则应用到坐标数据上。但这决定了输出是能直接用,还是得靠手工修。
文件不会离开你的浏览器。
如果只能用复制粘贴,几个实用修法
- 1先粘成纯文本Ctrl+Shift+V(Mac 上是 Cmd+Shift+V)。这会剥掉粘过来的一堆字体和字号,让你只需要对付一个问题而不是两个。
- 2用查找替换修换行在大多数编辑器里:先把连续两个换行替换成一个占位符,再把剩下的单个换行替换成空格,最后把占位符还原成段落分隔。这样换行的行会重新连成段落,而真正的段落分隔得以保留。
- 3搜索连字符模式查找「- 」(连字符后面跟空格),逐个检查。大多数是断词,可以直接合起来;少数是真正的复合词。
- 4两栏文档请正经提取不要试图手工把交错的两栏理顺。用能检测栏间距的提取器。这是唯一一种手工修复确实不值得花时间的情况。
常见问题
为什么同一个 PDF 在一个阅读器里复制得很干净,换一个就很糟?
因为每个阅读器都自己实现了一套从坐标重建结构的启发式规则。格式本身没有定义正确答案,所以不同软件做出不同的猜测,在难排版上就会分歧。
有没有能完美复制的 PDF?
有。带标签的 PDF 为无障碍访问包含了结构信息,复制效果好得多。它们是作者主动开启无障碍导出时产生的,可惜这仍然不常见。
提取成 Markdown 有帮助吗?
如果你想把标题层级拿回来,有帮助。Markdown 提取会从字号推断标题级别,所以你得到的是结构,而不是一整块扁平的文字。
提取能完全解决分栏问题吗?
标准的、栏间距清晰的两栏排版通常可以。杂志那种文字绕着图片走的复杂排版,对任何工具来说都确实很难。