![如何将外部 PDF 文件嵌入到我的文档中?](https://linux22.com/image/369977/%E5%A6%82%E4%BD%95%E5%B0%86%E5%A4%96%E9%83%A8%20PDF%20%E6%96%87%E4%BB%B6%E5%B5%8C%E5%85%A5%E5%88%B0%E6%88%91%E7%9A%84%E6%96%87%E6%A1%A3%E4%B8%AD%EF%BC%9F.png)
我希望制作一个可点击的文本,该文本可重定向到外部 pdf 文件。通过使用包,hyperref
链接仅在.tex
文件位置不变的情况下才有效,因此我希望在任何位置永久获得相同的效果。当然,我想获得与 hyperref 包相同的效果,但我希望这个技巧始终有效,因为我必须将此文件发送给其他人。
答案1
除非您可以远程或本地指定外部文件的位置,否则无法将链接指向外部文件。如果您不知道它可能在哪里,那您就完蛋了。如果您可以指望收件人将文件放在与当前 PDF 相同的目录中,那么您可以指定链接。但如果收件人移动其中一个文件,链接就会断开。
您可以做的是将另一个 PDF 包含在主 PDF 中,但不在主 PDF 中显示包含的 PDF。也就是说,您可以提供指向包含文件的链接,这样,当读者单击时,他们就可以查看该文件。
PDF 规范支持两种方式,这两种方式均由 LaTeX 软件包支持。首先,您可以嵌入文件。然后读者将看到嵌入文件的列表,并能够根据需要查看或保存它们。但是,此列表不会在页面上提供可点击的链接,即使会向读者显示可点击的选项。相反,当 PDF 查看器检测到 PDF 包含一个或多个嵌入文件时,它将为读者提供链接。
以下是嵌入 PDF 的 PDF 在 Okular 中显示链接的方式:
紫色栏包含一个蓝色链接。如果我点击此链接,Okular 会向我显示嵌入文件的列表。点击嵌入的 PDF,我可以选择保存或查看它。如果我选择查看它,Okular 会在新选项卡中打开它(就在上图中这个选项卡的右侧)。
其次,您可以附加文件。在这种情况下,可以在主 PDF 的页面上放置一个链接。在这种情况下,会在主 PDF 中创建一个链接,并用某种图标标记。这可以留给 PDF 查看器,也可以由 PDF 决定。但是,使用自定义图标有一些注意事项 -attachfile
有关详细信息,请参阅 的手册。
单击图标后,我可以选择将附加的 PDF 保存到我的磁盘。如果不先单独保存,我无法直接查看 PDF。我不确定这是由于我嵌入和附加文件到 PDF 的经验非常有限(到目前为止,我的经验大约为 20-30 分钟),还是由于我的 PDF 查看器的限制,或者是 PDF 规范支持的附加文件(而非嵌入文件)机制的固有限制。
代码:
\pdfminorversion=7
\begin{filecontents}{\jobname-attach.tex}
\documentclass{article}
\begin{document}
\texttt{\jobname-attach.tex}
This is an attachment.
\end{document}
\end{filecontents}
\begin{filecontents}{\jobname-embed.tex}
\documentclass{article}
\begin{document}
\texttt{\jobname-embed.tex}
This is embedded.
\end{document}
\end{filecontents}
% note that the above must be compiled separately before compiling the completed document.
\documentclass{article}
\usepackage{embedfile,attachfile2,kantlipsum}
\begin{document}
% uncomment after first run and compilation of other files
%\embedfile{\jobname-embed.pdf}
\kant[1]
% uncomment after first run and compilation of other files, substituting the name of your main test file where indicated to give the name of the PDF to be attached
%\attachfile[icon=Paperclip, mimetype=pdf]{<substitute name of job here>-attach.pdf}
\end{document}
第一次运行时,此代码将仅排版一段 Kant 并将两个附加文件写入您的工作目录。将每个文件编译为 PDF。然后取消注释指示的两行,并在指示的位置用您的主测试文件的名称替换命令\attachfile
。(\embedfile
很乐意解析\jobname
,而\attachfile
不愿意。)
然后再次编译示例代码,您将发现有一个主 PDF,其中有一个嵌入 PDF ,<name of job>-embed.pdf
和一个附加 PDF <name of job>-attached.pdf
。
在这两种情况下,链接都不依赖于了解不同 PDF 的位置,但在这两种情况下,主文件中都不会显示其他 PDF,就像 一样pdfpages
。