2017-02-03 279 views
0

我从一个php脚本创建一个PDF文件,并且希望这个PDF文件在用户打开时立即打印出来。没有更多的互动。为此,我发现,我可以添加一个可以使打印自动完成的JavaScript,理论上甚至没有任何弹出窗口或警报。如何禁止此文档正在尝试打印。你想允许这个吗?`

我试过的JavaScript的所有组合要嵌入的我能找到的所有论坛,即,:

  1. 设置interactionLevel为静音或自动。

    $script = "var pp = getPrintParams(); pp.interactive = pp.constants.interactionLevel.silent; this.print(pp);"

  2. 旧样式:

$script = 'this.print({bUI: false, bSilent: true});

  • 设置功能被priviledged:
  • $script = "sPrint = app.trustedFunction( function(){ app.beginPriv(); this.print({bUI:false, bSilent:true}); app.endPriv(); }); sPrint();"

    我甚至尝试添加在注册领域

    Acrobat Reader/DC/AVAlert/cCheckbox/cAcrobat/iWarnScriptPrintAll=1 Acrobat Reader/DC/EWH/bExecutePrint=1

    但我还是当我打开PDF无法摆脱弹出的警告窗口。我试图在Adobe Reader DC和Foxit中打开它。我收到相同的警告:

    本文档试图列印。你想允许这个吗?

    有没有人知道如何抑制这个弹出窗口?谢谢。

    回答

    1

    如果没有用户的同意或选择加入,您不能这样做。您可以在下列条件之一下默认打印脚本,但在每种情况下,用户都需要通过执行以下操作之一加入。

    1. 将允许您调用可信函数进行无声打印的脚本需要在用户计算机上的特权文件夹中安装。
    2. 该文档可以保存到特权文件夹。
    3. 您可以要求用户将您的域添加到特权域列表中。
      1. 签署文件并要求用户信任您的证书。

    见的Acrobat JavaScript的文档 http://help.adobe.com/en_US/acrobat/acrobat_dc_sdk/2015/HTMLHelp/Acro12_MasterBook/JS_API_AcroJSPreface/Privileged_context.htm

    +0

    的特许上下部分由于用户可能会收到PDF还通过电子邮件,对我来说,似乎只有点4是可能的。但是接下来的问题是我怎样才能从一个PHP脚本签署一个PDF文件? – pisoir

    +0

    我不确定是否有任何可以签署PDF的PHP库,但是,您可以使用任意数量的库来执行此操作,并使用PHP exec通过命令行调用它。但即便如此,用户在可以静默打印之前也需要信任您的证书。这就是说,如果我打开一个PDF并刚开始打印,我会非常生气。 – joelgeraci

    +0

    @ joelgeraci是对的!如果文档被认证并且证书被信任以“执行特权系统操作”,它工作得非常好 - 我只是测试了它(我将删除我的答案以支持这个)。如果您需要以纯PHP创建此任务,则可以查看我们的[签名解决方案](https://www.setasign.com/signer)。 –