\usepackage{attachfile2}
我正在使用和在我的 pdf 中嵌入一个外部文件\textattachfile[color=1 1 1]{description}{file.txt}
。我怎样才能让文本看起来和使用 hyperref 包并执行类似操作时一样
\label{here}%
\rlap{\hyperref{here}{\phantom{description}}}%
\textattachfile[color=0 0 0]{description}{file.txt}
?
我正在寻找包含非打印边框但仅在单击时打开文件的东西。我想我可以接受一些修改 hyperref 或 attachmentfile2 内部的 hack 代码。(我自己还没有弄清楚如何重新定义使用\Hy@StartlinkName
,例如,user
而不是goto link
,因为我不知道要传递给用户的/A
是什么/Subtype
。我还没有弄清楚如何修改 attachmentfile2 的内部以使其更像 hyperref。)
注意:解决方案我之前的问题仅适用于嵌入式 pdf 文件。
答案1
您可以使用 JavaScript 函数创建指向嵌入文件的链接exportDataObject
。以下代码创建一个新命令\embeddedfilelink{<file>}{<text>}
,该命令使用给定的链接文本创建指向由其文件名指定的嵌入文件的链接。代码取自hypgotoe
并进行了修改以创建 JavaScript 操作而不是 GoToE 操作。
\documentclass{article}
\usepackage{embedfile}
\usepackage{hyperref}
% How do I make an attached non-pdf file display like a link?
% (http://tex.stackexchange.com/q/230581)
\makeatletter
\newcommand*{\embeddedfilelink}[2]{%
\begingroup
\leavevmode
\pdfstartlink
attr{%
\Hy@setpdfborder
\ifx\@pdfhighlight\@empty
\else
/H\@pdfhighlight
\fi
\ifx\@filebordercolor\relax
\else
/C[\@filebordercolor]%
\fi
}%
user{%
/Subtype/Link%
/A<<%
/Type/Action%
/S/JavaScript%
/JS(this.exportDataObject({cName: "#1", nLaunch: 2}))%
>>%
}%
\relax
\Hy@colorlink\@filebordercolor#2%
\close@pdflink
\endgroup
}
\makeatother
\embedfile{file.txt}
\begin{document}
\embeddedfilelink{file.txt}{description}
\end{document}
确认强制性安全警告后,单击链接将打开嵌入的文件
请注意,此解决方案仅适用于支持 JavaScript 的阅读器,除了 Adobe Reader/Acrobat 之外,很少有阅读器支持该功能。