如何在 pdf 文档中创建链接以使用机器上安装的指定应用程序打开文件?

如何在 pdf 文档中创建链接以使用机器上安装的指定应用程序打开文件?

假设我的机器上有一个文件file:///c:\figure.bmp.

从我的 pdf 文档(使用 hyperref.sty 通过 LaTeX 创建)中,我如何figure.bmp使用mspaint.exe(微软内置图像编辑器)打开?

执行此场景的正确命令是什么?

如果我如下调用

\href{file:///c:\figure.bmp}{To open the figure, click here.}

figure.bmp使用 Illustrator 打开(例如)。

实际上,我可以更改文件关联以使用 mspaint 而不是 illustrator 打开 bmp。但是,我更喜欢找到另一种优雅的方法,即指定要打开的文件和用于打开的应用程序。

答案1

看起来您想要一个“启动”操作;请参阅 PDF 参考 1.6 版第 8.5.3 节中的表 8.49(第 622 页)或 1.7 版同一节中的表 8.53(第 660 页)。

两个版本均可从Adobe PDF 参考档案;由于大小,版本 1.6(8.8 MiB)可能比版本 1.7(31 MiB)更受欢迎。(由于 ISO 标准的排版很差,因此应尽量避免使用。)

看起来,实际使用它的最简单方法是使用 pdfLaTeX 原语\pdfstartlink\pdfendlink请参阅手册pdfTeX 页面

更新:

嗯,结果并不是特别容易,但是这里有一个完整的例子,它几乎对我来说是可行的——它似乎被正确解释,但失败了,因为(根据 Reader)“它目前被您的系统管理员不允许”。

(这似乎很明显,但以下内容是“普通”格式,而不是 LaTeX 格式——这是他们所说的解决方案

哦,还有一个警告:我不建议最初在 Adob​​e Reader 中测试对此的修改;当我尝试对一个稍微有缺陷的文件进行测试时,它会在我关闭窗口时忘记关闭文件,所以我必须关闭 Reader 本身才能重新运行 TeX。相反,在 gsview32 中尝试它,它具有提供某种诊断的额外优势,而不仅仅是不起作用。

%&plain
\pdfoutput=1
\pdfcompresslevel=0 % for debuggable PDF output

% taken from http://tex.stackexchange.com/questions/7136/.../7139#7139
{
\catcode`\^0
\catcode`\\12
^gdef^dirsep{\}
}

% This is surprisingly tricky to get right; check the PDF file in a
% text editor to make sure the correct string was output! For example,
% I had {} instead of a space after the \dirsep, and that got copied
% to the output.
\def\figurepath{C:\dirsep figure.bmp}

See the file
\pdfstartlink
  attr {/C [0.9 0 0] /Border [0 0 2]}
  user {
  /Subtype /Link
  /A <<
    /Type /Action       % This is a PDF "Action" dictionary ...
    /S /Launch          % ... for a "Launch" action
    /Win <<             % Nested dictionary of Windows-only stuff
      /F (mspaint)      % Application
      % Parameters; parens to delimit it as a PDF string, quotes so
      % that spaces won't foul things up, and \pdfescapestring to deal
      % with any (, ), or \ characters in the path
      /P (\pdfescapestring{"\figurepath"})
    >>
  >>}
{\tt \figurepath}
\pdfendlink

\bye

答案2

如果您不只是打开文件,而是通过调用所需文件来打开 MSPaint,您可能能够获得所需的结果。

如果你按照以下详细信息操作,你就可以实现这一点此 eHow 页面

打开文件 通过指定硬盘上的文件位置来打开图像文件。在“mspaint”后添加一个空格并输入完整的文件扩展名(例如:“mspaint c:/folder/subfolder/filename”)。确保文件名完全准确,包括文件扩展名。右键单击文件并选择“属性”,查看图像的确切位置。

在 Windows 上,这应该可以在命令行调用周围使用“ ”。但我搞不懂,因为

\href{file:///C:/Windows/system32/mspaint.exe C:/Users/haberthuer/Desktop/SomeFile.bmp}{To open the figure, click here.}

只需打开我的 Windows 资源管理器...

顺便说一句:为什么您要在 MSPaint 中打开 .BMP 文件是另一个问题...您能解释一下为什么要这样做吗?

相关内容