我正在尝试使用 pdflatex 和 pdfx 生成 PDF/A,并希望用我在 .xmpdata 文件中指定的值填充 PDF 元数据。
我的问题是,作者和关键词信息不会写入 PDF 元数据,而这对于标题和主题。
下面是一个 MWE 来演示我的问题,与 pdfx 文档所显示的非常相似。
\begin{filecontents*}{\jobname.xmpdata}
\Title{Baking through the ages}
\Author{A. Baker}
\Keywords{cookies\sep muffins\sep cakes}
\Publisher{Baking International}
\Subject{The Subject}
\end{filecontents*}
\documentclass{scrartcl}
\usepackage[a-1b]{pdfx}
\begin{document}
First line
\makeatletter
Author: \pdfx@Author
Keywords: \pdfx@Keywords
Subject: \pdfx@Subject
Title: \pdfx@Title
\makeatother
last line.
\end{document}
如果您检查 PDF 属性,作者和关键字的行是空的,我发现这不太直观,因为主题和标题已填满。这可能与作者和关键字字段中使用 \sep 有关,但实际上是否使用它并不重要(请参阅 MWE)。
我正在使用最新的 Manjaro Linux 和 texlive。我的 PDF 查看器是 evince。
我发现了以下解决方法,虽然可能非常糟糕,但对我来说很有效:
\makeatletter
\def\sep{; }
\pdfx@topdfstring\pdfx@Author\xmp@Author
\pdfx@topdfstring\pdfx@Keywords\xmp@Keywords
\makeatother
当我在之前插入这个时\begin{document}
,行为符合预期并且所有字段都被填充。
或者我可以指定相同的内容再次使用\pdfinfo{...}
,但我不明白为什么我需要再次这样做。
也许有人可以解释发生了什么,或者这是否是 pdfx 中的一个错误。谢谢。
答案1
我建议采用以下方法,而无需pdfx
让您的 MWE 正常工作:
%\pdfobjcompresslevel=0 %uncomment for Texlive
\documentclass{scrartcl}
\usepackage{hyperxmp}
\usepackage[pdfa]{hyperref}
\usepackage{mmap} %only needed for pdfTeX
\title{Baking through the ages}
\subtitle{The Subject}
\author{A. Baker, A. Companion}
\newcommand\stichworte{cookies,muffins,cakes}
\hypersetup{%
pdfapart=1,
pdfaconformance=b,
pdfkeywords={\stichworte},
pdfpublisher={Baking International}
}
\immediate\pdfobj stream attr{/N 3} file{sRGB.icc}
\pdfcatalog{%
/OutputIntents [
<<
/Type /OutputIntent
/S /GTS_PDFA1
/DestOutputProfile \the\pdflastobj\space 0 R
/OutputConditionIdentifier (sRGB)
/Info (sRGB)
>>
]
}
\begin{document}
First line
\makeatletter
Author: \@author
Keywords: \stichworte
Subject: \@subtitle
Title: \@title
\makeatother
last line.
\end{document}
我不能代表 pdfx 发言,但重复使用变量也会破坏其他软件包。因此,最好为不属于标题页的条目创建一个新命令,就像\stichworte
在这个 MWE 中所做的那样。