如何将摘要嵌入为 XMP 元数据?

如何将摘要嵌入为 XMP 元数据?

可以hyperxmp将文档摘要作为 XMP 元数据嵌入到 LaTeX 中吗?如果不行,有人能建议我如何执行此操作吗?

答案1

目前,我知道有两个hyperxmp xmpincl三个软件包可以嵌入 XMP:和pdfx。第一个的优点是易于使用;第二个可能更具可扩展性。

另一个考虑因素是,根据(快速浏览一下包含的三个文件)XMP 规范,不存在天生的“抽象”属性。你最合适的两个选择是:

  • dc:description,它(应该是)“资源的帐户”;
  • dc:subject,即(应该是)“资源的主题”,并添加以下注释:“通常,主题将使用关键字、关键短语或分类代码来表示...。”

有了hyperxmp,这些已经映射到特定选项。xmpincl期望你做你想做的事和你需要做的事,并且提供很少的帮助来确保事情顺利进行。

超频设计用于hyperref,它按以下方式映射这两个字段:

  • dc:descriptionpdfsubject
  • dc:subjectpdfkeywords

这表明嵌入摘要的最简单方法是将其放入 中,hyperrefpdfsubject介导hyperxmp。如下所示:

\documentclass{article}
\usepackage{lipsum}% just for the example
\usepackage{hyperxmp}
\usepackage{hyperref}

% Set metadata once for reuse
\newcommand\myabstract{%
  hyperxmp makes it easy for an author to include xmp metadata in a
  pdf document produced by \texorpdfstring{\LaTeX}{LaTeX} seamlessly
  with hyperref and requires virtually no modifications to a document
  that already specifies document metadata through hyperref’s
  mechanisms.}

\title{Abstracts in XMP Metadata}
\author{\myauthor}

\hypersetup{%
  pdfsubject={\myabstract},
}

\begin{document}
\maketitle

\begin{abstract}
  \myabstract
\end{abstract}

\lipsum[1]

\end{document}

这似乎有效。但是,我使用的是 Linux,无法通过 Adob​​e Acrobat 轻松查看此文件发生了什么。pdfinfo返回以下内容:

Title:          Abstracts in XMP Metadata
Subject:        hyperxmp makes it easy for an author to include xmp metadata in a pdf document produced by LaTeX seamlessly with hyperref and requires virtually no modifications to a document that already specifies document metadata through hyperref's mechanisms.
Keywords:       
Author:         Jane Smith
Creator:        LaTeX with hyperref package
Producer:       pdfTeX-1.40.16
[... etc....]

我很想知道是否有人能确认,在更支持 XMP 的环境中,一切是否正常。还请注意,在以逗号分隔的字段(例如pdfauthorpdfkeywords)中包含逗号时,需要遵守一些特殊规则;有关详细信息,请参阅手册。

響鳴至少一开始不太方便用户使用。您必须设置一个.xmp文件,然后将其包含进去。在 LaTeX 文档中使用该包很容易。作者建议在之前调用该包\documentclass,因此一个简单的文件如下所示:

\RequirePackage{xmpincl}
\includexmp{example}
\documentclass{article}
\usepackage{lipsum}
% \usepackage{hyperref}

\begin{document}

\begin{abstract}
  xmpincl makes it possible for an author to include xmp metadata in a
  pdf document produced by \LaTeX.
\end{abstract}

\lipsum[1]

\end{document}

但是,您还需要在同一个目录中有一个文件(我碰巧称之为)example.xmp,它看起来应该像这样:

<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c017 91.164374, 2020/03/05-20:41:30        ">
   <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
      <rdf:Description rdf:about=""
            xmlns:dc="http://purl.org/dc/elements/1.1/">
         <dc:title>
            <rdf:Alt>
               <rdf:li xml:lang="x-default">xmpincl</rdf:li>
            </rdf:Alt>
         </dc:title>
         <dc:description>
            <rdf:Alt>
                <rdf:li xml:lang="x-default">A LaTeX package to include XMP metadata in files generated through pdfLaTeX</rdf:li>
            </rdf:Alt>
         </dc:description>
         <dc:creator>
            <rdf:Seq>
               <rdf:li>Maarten Sneep</rdf:li>
            </rdf:Seq>
         </dc:creator>
      </rdf:Description>
   </rdf:RDF>
</x:xmpmeta>

pdfinfo -meta给我:

[…]
<dc:description>
<rdf:Alt>
<rdf:li xml:lang="x-default">A LaTeX package to include XMP metadata in files generated through pdfLaTeX</rdf:li>
</rdf:Alt>
</dc:description>
[... etc....]

所以这也行得通。缺点是,如果你hyperref也使用,就没有(简单?)方法来重新使用元数据,就像我在hyperxmp上面的例子中所做的那样。这意味着你无论如何都要把它们放在字段中hyperref(或者至少是其中一些条目)。

PDF格式还允许通过 XMP 添加元数据(它依赖于xmpincl)手册非常有用,并建议像我上面所做的那样dc:description通过\Subject命令使用pdfx。要注意的另一个关键是,您应该将 XMP 数据文件命名为与实际.tex文件相同的名称,但扩展名为.xmpdata。也就是说,如果您的文件名为myfile.tex,请将元数据文件命名为myfile.xmpdata。(注意:这很容易通过\jobname原语实现,下面的示例使用了它。)

这是一个主要根据软件包手册构建的示例文件:

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lipsum}
\usepackage[colorlinks]{hyperref}

\usepackage{filecontents}
% Notes:
% - It is suggested you put this file right before you load `pdfx`
% - `pdfx` depends on `hyperref`, so you need to load it before `pdfx`
%   if you are going to load `hyperref` with options
% - The information below comes from the `pdfx` manual
\begin{filecontents*}{\jobname.xmpdata}
\Title{Baking through the ages}

\Author{A. Baker\sep C. Kneader}

\Keywords{cookies\sep muffins\sep cakes}

\Subject{The abstract.}

\Publisher{Baking International.}

\Copyright{A copyright statement.}

\CopyrightURL{location of a web page describing the owner and/or
  rights statement for this document.}

\Copyrighted{‘True’ if the document is copyrighted, and ‘False’ if it
  isn’t. This is au- tomatically set to ‘True’ if either}

\PublicationType{The type of publication. If defined, must be one of
  ‘book’, ‘catalog’, ‘feed’, ‘journal’, ‘magazine’, ‘manual’,
  ‘newsletter’, ‘pamphlet’. This is automatically set to ‘journal’ if
  \string\Journaltitle is specified, but can be overridden.}

\Journaltitle{The title of the journal in which the document was
  published.}

\Journalnumber{The ISSN for the publication in which the document was
  published.}

\Volume{Journal volume.}

\Issue{Journal issue/number.}

\Firstpage{First page number of the published version of the
  document.}

\Lastpage{Last page number of the published version of the document.}

\Doi{Digital Object Identifier (DOI) for the document, without the
  leading ‘doi:’.}

\CoverDisplayDate{Date on the cover of the journal issue, as a
  human-readable text string.}

\CoverDate{Date on the cover of the journal issue, in a format
  suitable for storing in a database field with a ‘date’ data type;
  e.g. YYYY-MM, or YYYY-MM-DD.}

\end{filecontents*}
\usepackage{pdfx}

\begin{document}

\lipsum[1]

\end{document}

这将生成一个名为pdfa.xmpi(由于使用了 [未] 选项,因此它是 PDF/A 的文件。)并且生成的 XMP 数据根据以下规定有效:http://www.pdflib.com/knowledge-base/xmp-metadata/free-xmp-validator/

因此,我建议使用hyperxmppdfx作为将摘要等内容嵌入元数据的好方法。

答案2

hyperxmp 可在 Mac OSX 上使用 XeLaTeX (2021)。摘要存储在主题字段中,可在 Acrobat DC 2021、Preview、Skim、XnViewMP 和 Finder 中查看。但是,除 Finder 外,其他所有工具都会截断主题字段。只有 Finder 以多行显示它。因此,我的建议是避免在主题中放入任何长文本,因为在大多数 pdf 阅读器中它都无法读取。

相关内容