我想将文件嵌入到 pdf 中。我需要 PDF 中的 /AFRelationship 条目,因为这是 PDF/A 强制要求的。下面的最小示例适用于 pdfTeX。当hyperref
禁用时,它也适用于 LuaTeX。但是它不适用于 hyperref 和 LuaTeX。
平均能量损失
\documentclass{article}
\usepackage{embedfile}
\usepackage{hyperref}
\embedfile[afrelationship={/Source}]{\jobname.tex}
\begin{document}
Text
\end{document}
MWE 输出
生产
<</Type/Filespec/F(testbrief.tex)/AFRelationship\376\377\000/\000S\000o\000u\000r\000c\000e/EF<</F 1 0 R>>>>
这会在 Acrobat DC 的 PDF/A3-b 预检中引发验证错误:
有了hyperref
残疾人,我
<</Type/Filespec/F(testbrief.tex)/AFRelationship/Source/EF<</F 1 0 R>>>>
已通过验证。
问题
由于我需要 luatex 来处理字体,需要 hyperref 来处理链接和元数据,所以这是一个问题。如何解决这个问题?
答案1
更新
已将 embedfile 的修正版本上传到 ctan。不再需要该补丁。现在,没有补丁的条目如下所示
<</Type/Filespec/F(a.tex)/AFRelationship/Source/EF<</F 1 0 R>>>>
旧答案。
这是一个错误。Embedfile 不应该尝试转换该值。
尝试这个补丁
\documentclass{article}
\usepackage{l3pdf}
\ExplSyntaxOn
\pdf_uncompress:
\ExplSyntaxOff
\usepackage{embedfile}
\usepackage{etoolbox}
\makeatletter
\patchcmd\EmFi@embedfile
{\EmFi@convert\EmFi@afrelationship\EmFi@@afrelationship}
{\let\EmFi@@afrelationship\EmFi@afrelationship}{}{\fail}
\makeatother
\usepackage{hyperref}
\embedfile[afrelationship={/Source}]{embedtest.tex}
\begin{document}
Text
\end{document}