说几个编辑 PDF 的难点(只是根据我目前的经验总结,还没有阅读过 PDF 标准):
需要理解文档语义:页眉、页脚、段落、标题等语义信息一般不包含在 PDF 中,只有 tagged PDF 才可能有些许帮助。
就地编辑可能导致重排:PDF 是基于绝对坐标的,不像 Word 是基于流式内容。修改文字后可能破坏排版,导致需要部分或全部重新排版。当然好处就是任何 PDF 阅读器看到的内容几乎一样。
排版本身就不简单:想想 LaTeX 需要支持很多字体特性、断行算法、表格分页、浮动体支持,PDF 编辑器重新生成的内容质量不高。
字体子集化:PDF 文件常只嵌入实际使用中字体的字形,导致新增文字时字体中可能缺少对应字形,无法正确显示。
编码与文字映射复杂:PDF 中的文本内容不一定使用 Unicode 编码,而是引用字体中自定义的字形编码,编辑器需要反向映射这些编码才能恢复原始文字。还有合字或上下文替换只体现为一个字形。还有些时候 PDF 复制出来都是错的,更别说还原了。
字体布局信息不可逆:如 kerning (字偶间距)等 OpenType 特性常以坐标偏移体现在 PDF 中,这种低级信息很难还原为原始高层语义,并且嵌入的字体也不会有这个表。
不过有些编辑还是很好做的:旋转页面(修改、覆盖(非就地)编辑、手工删除页面内容(不需要重排)
建议看看 qpdf 作者写的 Text in PDF:
https://medium.com/@jberkenbilt/text-in-pdf-introduction-df3dd3dfa9ea