使用 dvipdfmx 将文件附加到 PDF

使用 dvipdfmx 将文件附加到 PDF

attachfile包允许将文件嵌入 pdfLaTeX 文档的输出 PDF 中,并且 attachmentfile2dvips也扩展了此功能以供使用。

一篇文章的作者dvipdfmx给出了使用该驱动程序执行相同操作的方法:

\begin{filecontents*}{example.txt}
this is a text file to be embedded
\end{filecontents*}

\documentclass{article}
\begin{document}
test
\special{pdf:fstream @myfile (example.txt)}%
\special{pdf:ann bbox 0 0 10 10 <<
  /Subtype /FileAttachment /FS << 
    /Type /Filespec /F (example.txt)
      /EF << /F @myfile >> >> 
  /Name /PushPin >>}
\end{document}

但是,当我使用latex+编译它时dvipdfmx,出现以下警告:

** 警告 ** 无法打开文件:example.txt
** 警告 ** 解释特殊命令 fstream (pdf:) 失败。
** 警告 ** >> 位于页面“1”位置“(168.14, 707.125)”(PDF 格式)
** 警告 ** >> xxx "pdf:fstream @myfile (example.txt)"
]
** 警告 ** 对象 @myfile 已使用,但未定义。替换为 null。

有人知道我错在哪里吗?(TeX Live 2010,Mac OS X。)如果能够使用此方法嵌入文件就太好了,因为这将方便 XeTeX 与软件包一起使用attachfile

更新:在 TeX Live 2009 中一切似乎都运行良好。我认为这是 dvipdfmx 最新版本的一个错误。有没有人对此进行确认?

答案1

谢谢角斗明在 TeX Live 邮件列表中查找答案。出于安全原因,不再搜索当前目录,因此文件名中必须包含相对路径:

\special{pdf:fstream @myfile (./example.txt)}%
\special{pdf:ann bbox 0 0 10 10 <<
  /Subtype /FileAttachment /FS << 
    /Type /Filespec /F (./example.txt)
      /EF << /F @myfile >> >> 
  /Name /PushPin >>}

相关内容