怎么做到的
为什么改 PDF 经常改坏版面、这里做了什么不一样的事,以及改完之后怎么核对版面没有被带动。
为什么 PDF 的文字难改
PDF 页面里没有段落,也没有词。它存的是一串画图指令:用这个字体、多大号、在这个位置、画这几个字。甚至不保证文字按阅读顺序出现:一个页面完全可以先画最后一行。
所以当一个工具说它能编辑 PDF,它得先猜出被编辑的结构:读出文字,猜哪里是词、哪里是行,照着猜的结果建一份文档,再生成一个新 PDF。回来的是一份重做过的页面:大体上还像原稿,但经常不完全一致,只要页面上有表格或者有辨识度的字体,就明显不是原来那份。
为什么盖住旧字会出问题
另一条常见的路是不动页面,把它盖住:拿白色方块压住旧字,在上面画新的。这个做法快,缩略图里看着也对。它同时意味着这份文档里现在两个版本都在:选中文字,出来的是旧字;搜索,搜到的是旧字;换一个阅读器打开,或者把内容复制出去,那个方块还可能移位甚至消失,露出下面的旧字。
这里的做法
它直接改那串画图指令:找到画你那个词的那条指令,把里面的字换成你要的,由文件自己的嵌入字体画出来。页面上没有任何东西靠猜,因为不需要猜:改动就发生在页面存放文字的那一层。
让这一行留在原位
May 换成 June,这段文字变宽了,这一行后面的内容本来会跟着右移。同一行里本来就有可调的字距,多出来或少掉的宽度会在这一行内补平,于是改动后面的字位置保持不变。不是整行重排,只是把这一行的间距调回去。
每次修改怎么核对
每次修改之后,新页面和原页面都会被重新读出来,改动区域之外的每个字符逐个比对:同一个字、同一个位置,误差不超过二十分之一磅。两个页面还会被渲染成图片再比一遍,只放过改动区域本身。
只要有东西动了,文件在变成你能下载的东西之前就被丢弃。这也是它拒绝率不低的原因:改不动的时候,它直接说明原因,不产出版面乱掉的文件。
哪些情况改不了
几乎所有拒绝都是这四种之一:
- 字体里没有这个字。PDF 往往只带它用过的那些字,一个标题字体可能就几十个。缺的字不会硬写,以免页面上混进另一种字体。
- 那里根本没有文字。页面是扫描件,里面是文字的图像。
- 定位不到唯一的位置。有些页面把一个词拆在几条指令里,没法确定地对上。这时它不猜位置,停下来告诉你。
- 同一段内容被多个页面共用。改一次会把所有页面一起改掉,那不是你要的。
拿 150 份真实文档测下来,大约五分之四可以修改。剩下的几乎全是第一种:标题字体只带了九到四十三个字。