![从 pdf 中提取 evince 的书签并将其添加到另一个 pdf 中](https://linux22.com/image/124571/%E4%BB%8E%20pdf%20%E4%B8%AD%E6%8F%90%E5%8F%96%20evince%20%E7%9A%84%E4%B9%A6%E7%AD%BE%E5%B9%B6%E5%B0%86%E5%85%B6%E6%B7%BB%E5%8A%A0%E5%88%B0%E5%8F%A6%E4%B8%80%E4%B8%AA%20pdf%20%E4%B8%AD.png)
使用 evince 我为一个 pdf 文件添加了书签(在 ubuntu 16.04 中)。我想复制这些证据的书签。我发现它们被存储为元数据并且可以使用
gvfs-info myfile.pdf
但是,如果我将这些书签复制到另一个位置或另一台计算机,我找不到将这些书签“粘贴”到文件元数据的方法。发现同样的问题在这里有一个不起作用的建议(cp --preserve=all)。
(我主要使用 ubuntu 16.04 和 cinnamon,但我也安装了一些 Mint 版本。)
答案1
您链接到的答案是错误的 - 甚至远未接近正确。保留的属性cp
只是文件系统属性(所有权、时间戳、权限)。文件元数据完全无关。
没有任何简单的方法可以将特定于应用程序的数据(例如evince
书签)复制到另一个系统。书签不存储在文件中或与文件一起存储,它们是由 evince 使用存储的吉奥。
您可以使用 提取元数据gio info
,将其存储在文件中,然后将其恢复到远程系统上。例如,如果使用scp
复制远程主机上的文件:
gio info -a "metadata::evince::bookmarks" filename.pdf |
sed -n '/metadata::/ s/^.*: //p' > filename.bookmarks
scp filename.pdf filename.bookmarks user@remote:/path/to/store/file/
然后,在远程系统上:
cd /path/to/store/file/
gio set filename.pdf 'metadata::evince::bookmarks' "$(cat filename.bookmarks)"
顺便说一句,如果您使用标准 unix 工具(例如cp
或mv
)来复制或移动文件,而不是停留在 GIO 感知应用程序(例如nautilus
答案2
非常感谢卡斯。用过的:
gvfs-info -a metadata::evince::bookmarks: myold.pdf
然后:
gvfs-set-attribute -t string mycopied.pdf metadata::evince::bookmarks "extracteddataenclosedindoublequotes"