合并来自两个文件的 PDF 注释

bec*_*cko 7 pdf software-recommendation

我有同一个 PDF 文档的两个版本。一个是我在笔记本电脑上阅读时在上面做的注释,而另一个是我在平板电脑上做的注释。现在我想将这些注释合并到同一个文件中。

我知道 Adob​​e Acrobat 允许我这样做(例如参见Ask Different 上的这个答案)。是否有任何我可以在 Ubuntu 中使用的软件可以让我做到这一点?

就其价值而言,我在平板电脑上使用 Xodo。

des*_*ert 1

至少okular将注释存储为 的对象/Type/Annot,请参阅以下语法示例:

\n\n
17 0 obj\n<<\n/Type/Annot\n/Rect[67.023 756.168 85.203 774.333]\n/Subtype/Text\n/M(D:20170828091301)\n/T(\xe2\x96\xa0\xc2\xa0somebody)\n/Contents(\xe2\x96\xa0\xc2\xa0text)\n/NM(okular-{8ff65cc1-7b89-45c6-8adf-1aa6cec06cd0})\n/F 4\n/C[1 1 0]\n/CA 0.5\n/Border[0 0 1]\n/P 20 0 R\n>>\nendobj\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n\n
18 0 obj\n<<\n/Type/Annot\n/Rect[37.7 597.841 236.675 615.979]\n/Subtype/FreeText\n/DA(/Invalid_font 10 Tf)\n/M(D:20170828091316)\n/T(\xe2\x96\xa0\xc2\xa0somebody)\n/Contents(\xe2\x96\xa0\xc2\xa0text)\n/NM(okular-{50420111-1c05-4e07-8db5-08deffb0ec7e})\n/F 20\n/C[1 1 0]\n/CA 0.5\n/Border[0 0 1]\n/Q 0\n/IT/FreeText\n/P 20 0 R\n>>\nendobj\n
Run Code Online (Sandbox Code Playgroud)\n\n

这些对象使用诸如 之类的命令链接到页面/Annots 14 0 R,这就是该脚本删除给定pdf文件中所有注释的方式,它只是删除所有行/Annots

\n\n
pdftk original.pdf output uncompressed.pdf uncompress\nLANG=C sed -n \'/^\\/Annots/!p\' uncompressed.pdf > stripped.pdf\npdftk stripped.pdf output final.pdf compress\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果您真正深入了解特定pdf文档 \xe2\x80\x93 的结构,只需使用文本编辑器 \xe2\x80\x93 打开它们,您也许能够了解正在发生的情况并设法操作您的文档例如sed,但是我严重怀疑是否存在适合pdf此处每种类型文档的解决方案。就其价值而言,(至少对于我的测试文件而言)以下单行代码为您提供了input.pdf终端中的注释:

\n\n
pdftk input.pdf output - uncompress | sed \'/^\\/Contents (/!d\'\n
Run Code Online (Sandbox Code Playgroud)\n\n

添加>> comments到该行的末尾以将输出存储在名为comments相反的文件中。

\n