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

ili*_*dis 5 evince file-metadata

使用 evince 我为 pdf 文件添加了书签(在 ubuntu 16.04 中)。我想复制这些 evince 的书签。我发现它们存储为元数据,可以使用

gvfs-info myfile.pdf

但是我发现无法将这些书签“粘贴”到文件元数据,如果我将它复制到另一个位置或另一台计算机。在这里发现了同样的问题,但建议 (cp --preserve=all) 不起作用。

(我主要使用带有 cinnamon 的 ubuntu 16.04,但我也安装了一些 Mint 版本。)

cas*_*cas 2

您链接到的答案是错误的 - 距离正确还差得很远。保留的属性cp只是文件系统属性(所有权、时间戳、权限)。文件元数据完全无关。

没有任何简单的方法可以将特定于应用程序的数据(例如evince书签)复制到另一个系统。书签不存储在文件中或与文件一起存储,而是由 evince 使用GIO存储。

您可以使用 提取元数据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/
Run Code Online (Sandbox Code Playgroud)

然后,在远程系统上:

cd /path/to/store/file/
gio set filename.pdf 'metadata::evince::bookmarks' "$(cat filename.bookmarks)"
Run Code Online (Sandbox Code Playgroud)

顺便说一句,如果您使用标准 unix 工具(例如cpmv)来复制或移动文件,而不是停留在 GIO 感知应用程序(例如nautilus