我正在提交用 LaTex 创建的博士论文,图书馆要求创建的 pdf 的元数据包含标题、作者和语言,特别提到在 Adobe 中打开时语言必须正确(在高级阅读选项下)。图书馆建议在 texfile 中添加以下代码:
\usepackage{hyperref}
\hypersetup {
pdfpagemode = {UseNone},
pdftitle = {Titel},
pdfauthor = {Vorname Nachname},
pdflang = {de-DE}
}
如果我将其添加到我的文档中,标题和作者会被正确插入,但 Adobe 中的语言字段仍然为空白。
起初我以为有些包不兼容,所以我创建了以下最小(不)工作示例:
\documentclass{book}
\usepackage[utf8]{inputenc}
\title{metatest}
\usepackage{hyperref}
\hypersetup{
pdftitle = {Some title},
pdfauthor = {Name Name},
pdflang = {en-US},
}
\begin{document}
\section{Introduction}
\end{document}
编译后,会生成一个包含元数据作者和标题的 PDF,但语言字段仍为空。那么,如何生成 Adobe 可识别的语言元数据呢?
答案1
语言设置在那里。但与作者和标题不同,它不是写在信息字典中,而是写在 PDF 目录中。如果您创建未压缩的 PDF,然后查看文件,您就可以看到它。
\RequirePackage{expl3}
\ExplSyntaxOn
\pdf_uncompress:
\ExplSyntaxOff
\documentclass{book}
\title{metatest}
\usepackage{hyperref}
\hypersetup{
pdftitle = {Some title},
pdfauthor = {Name Name},
pdflang = {en-US},
}
\begin{document}
\section{Introduction}
\end{document}
给出
30 0 obj
<<
/Type /Catalog
/Pages 14 0 R
/Outlines 27 0 R
/Names 29 0 R
/PageMode/UseOutlines/Lang(en-US)%<---- /Lang is there
/OpenAction 5 0 R
>>
endobj
使用 Adobe Reader 时看不到该语言。但使用 Acrobat 时,我可以在扩展选项中看到它:
答案2
使用以下设置。它适用于 pdflaltex 和 lualatex。
% !TeX TS-program = pdflatex
\documentclass{book}
\usepackage[utf8]{inputenc}
\title{metatest}
\usepackage{hyperref}
\hypersetup{%
pdfinfo={%
Author={Simon Dispa},
Title={Metadata of PDF document using PDFLaTeX},
CreationDate={D:20210607195600},
ModDate={...},
Keywords={PDF,LaTeX},
Subject={Add custom properties},
version=0.9.b, % custom property <<<<<<<<<<
language=en-US % custom property <<<<<<<
}
}
\begin{document}
\section{Introduction}
\end{document}
笔记 我认为现在您不想加深对 XMP 主题的了解以将元数据包含在文档中。
其他读者可能对这个hyperxmp
软件包及其出色的手册感兴趣https://ctan.org/pkg/hyperxmp?lang=en