将 XMP 元数据添加到我的文档

将 XMP 元数据添加到我的文档

除了印刷版书籍外,还计划推出电子书版本,出版商需要为其设置某些 XMP 元数据。更具体地说Title,、和。就我个人而言Author,我还想存储创建它的 git 哈希。Copyright-StatusCopyright-NoticeCopyright-URL

这是我尝试过的:

\documentclass{scrbook}

\immediate\write18{git log -1 --format="\@percentchar H " > currentVersionLong}

\usepackage{hyperxmp}
\usepackage{hyperref}
\hypersetup{%
    pdftitle={The title},
    pdfauthor={The author},
    pdfcopyright={\textcopyright\ 2020 by the publisher},
%   pdfversionid={\IfFileExists{currentVersionLong}{\input{currentVersionLong}}{No version information}},
    pdflicenseurl={https://tex.stackexchange.com}
}

\begin{document}
    Just an empty document
\end{document}

然而有两个问题:

  1. 如果我在 Adob​​e Reader 中检查 PDF,我只能看到以下信息: 在此处输入图片描述

在此处输入图片描述

我不应该在这里看到数据吗,或者我是否需要检查未压缩的 PDF 文件Notepad++

  1. 我想从命令行读取当前 git 的内容,并通过 将其写入文件。但是hyperxmp 不喜欢write18该行。有什么想法吗?我可以先将其读入宏中,然后以这种方式使用它?pdfversionid={\IfFileExists{currentVersionLong}{\input{currentVersionLong}}{No version information}},

答案1

hyperxmp 填充了所谓的 xmp 元数据。您可以通过查看 pdf 来检查它们(通常它们未压缩,即使 pdf 的其余部分已压缩。它们以

<<
/Type /Metadata /Subtype /XML 
/Length 8178      
>>
stream
<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/">
  <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
    <rdf:Description rdf:about=""
....

问题中的屏幕截图主要显示了 Info 字典的内容(Adobe Reader 还将使用 xmp 元数据中的值,因此可能是两者的混合)。您可以使用以下命令在其中添加更多值pdfinfo

\hypersetup{%
    pdftitle={The title},
    pdfauthor={The author},
    pdfinfo={Copyright=some copyright info, 
            licence=https://tex.stackexchange.com}
}

会给

在此处输入图片描述

您可以使用 catchfile 包来捕获宏内的某些文件内容,然后在元数据中使用。

答案2

尝试这个

\documentclass{scrbook}

\usepackage{hyperxmp}
\usepackage{hyperref}
\usepackage{gitver}

\title{The title}
\author{The author}

\hypersetup{%
   pdfcopyright={\textcopyright\ 2020 by the publisher},
   pdfversionid=\gitVer,
   pdflicenseurl={https://tex.stackexchange.com}
}

\begin{document}
    Just an empty document
\end{document}

您可以在“附加元数据”下看到您的数据: Acrobat 屏幕截图文件属性 Crobat 屏幕截图高级元数据

由于我没有 git 存储库,因此值为“未知”。

相关内容