从 pdf 中提取 evince 的书签并将其添加到另一个 pdf 中

从 pdf 中提取 evince 的书签并将其添加到另一个 pdf 中

使用 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 工具(例如cpmv)来复制或移动文件,而不是停留在 GIO 感知应用程序(例如nautilus

答案2

非常感谢卡斯。用过的: gvfs-info -a metadata::evince::bookmarks: myold.pdf

然后:

gvfs-set-attribute -t string mycopied.pdf metadata::evince::bookmarks "extracteddataenclosedindoublequotes"

相关内容