是否可以在 LaTeX 中同时使用 hyperxmp 和 xmpincl?

是否可以在 LaTeX 中同时使用 hyperxmp 和 xmpincl?

我正在尝试将其他 xmp 元数据添加到 hyperxmp 未涵盖的 pdf 文件中。我尝试同时使用 hyperxmp 和 xmpincl。在 TeXnicCenter 中构建项目不会产生任何错误,因此我认为包含和使用这两个包是可以的。但是当我通过 java 代码提取 xmp 文件时,xmp 文件中存储的唯一 xmp 元数据是使用 hyperxmp 创建的元数据。我做错了什么,还是真的无法同时使用这两个包?

答案1

你不能直接使用这些包hyperxmpxmpincl合并到一个文档中,因为最终 PDF 文件会包含两个不兼容的 XMP 元数据条目。但是,您可以重复使用由hyperxmp手册

hyperxmpxmpincl可以相互补充。作者可能希望使用hyperxmp来生成一组基本的 XMP 代码,然后使用文本编辑器从 PDF 文件中提取 XMP 代码,使用 不支持的任何元数据来扩充 XMP 代码hyperxmp,并使用xmpincl将修改后的 XMP 代码包含在 PDF 文件中。

为了稍微简化这个过程,您可以创建一个文档metadata.tex,在其中设置所有元数据hyperxmp,并将生成的 XMP 代码写入文件metadata.xmp

metadata.tex

\documentclass{article}

\usepackage{hyperref}
\usepackage{hyperxmp}
\newwrite\xmpmetadata
\makeatletter
\hyxmp@at@end{%
  % Create XMP code and write it to macro \hyxmp@xml
  % (cf. hyperxmp.sty, \hyxmp@construct@packet (ll. 847-868))
  \gdef\hyxmp@xml{}%
  \hyxmp@add@to@xml{%
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="3.1-702">^^J%
___<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns\hyxmp@hash">^^J%
  }%
  \hyxmp@pdf@schema
  \hyxmp@xmpRights@schema
  \hyxmp@dc@schema
  \hyxmp@photoshop@schema
  \hyxmp@photometa@schema
  \hyxmp@xmp@basic@schema
  \hyxmp@mm@schema
  \hyxmp@add@to@xml{%
___</rdf:RDF>^^J%
</x:xmpmeta>^^J%
  }%
  % Write content of \hyxmp@xml to file metadata.xmp
  \immediate\openout\xmpmetadata=metadata.xmp%
  \immediate\write\xmpmetadata{\hyxmp@xml}%
  \immediate\closeout\xmpmetadata%
}
\makeatother

% Specify the XMP metadata here
\hypersetup{
  pdfauthor={Author},
  pdftitle={Title},
  pdfcopyright={(c) 2013 by Author}
}

\begin{document}
The purpose of this document is to generate a file \texttt{metadata.xmp} containing XMP metadata.
\end{document}

这将生成一个文件metadata.xmp,您可以根据需要修改它并将其包含到您的主文档中:

document.tex

\documentclass{article}

\usepackage{hyperref}
\usepackage{xmpincl}
\includexmp{metadata}

\begin{document}
This is the main document, using the XMP metadata found in \texttt{metadata.xml}.
\end{document}

相关内容