Vim兄,我看了下XChange Editor的图像编辑功能,原理很简单, 就是提取pdf内嵌图像object, 解码并保存为无损压缩的png,在其他图像编辑软件里编辑完成后,再把png转换为内嵌图像object,并更新pdf内容。
pdf的内嵌图像object是压缩过的,黑白图像可以是无损(JBIG2, CCITT3or4, Run Length等)或有损(JBIG2等),灰度和彩色图像可以是无损(PNG zip, TIFF zip等)或有损(JPEG, JPEG2000等)。具体哪个内嵌图像object用了哪种压缩方式, 可以查看对应object的属性相应字段。一般尺寸的扫描pdf文件,黑白图像用无损,灰度和彩图用有损方式存储比较多见。
具体到从中间的无损格式图像再转换回的内嵌图像object,和原始的内嵌图像object哪个大哪个小, 取决于图像编辑前后内容的变化,以及pdf编辑工具的对不同类型图像的压缩选项。
个人觉得批量导出无损格式图像,编辑完后再一次性转换为pdf,和在pdf编辑器里调用图像编辑软件逐个编辑,没有绝对的高下之分吧, 还是看应用场景。大量的批处理,前者效率明显更高;零散编辑的话,后者灵活性会更好。但是调用图像编辑软件再用有损方式存回内嵌图像object的情况,同一object编辑次数越多,有损压缩次数就会越多,需要考虑这种操作方式对图像质量的不利影响。