0

I create a pdf from a php script and want this pdf to print itself as soon as user opens it. Without any more interaction. For this I found out, that I can add a javascript which can make the print automatical, and theoretically even without any popup windows or alerts.

I tried all combinations of javascript to embed which I could find on all forums, i.e.,:

  1. Setting interactionLevel to silent or automatic.

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

  2. Old style:

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

  1. Setting the function to be priviledged:

$script = "sPrint = app.trustedFunction( function(){ app.beginPriv(); this.print({bUI:false, bSilent:true}); app.endPriv(); }); sPrint();"

I even tried to add in register the fields

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

But I still can't get rid of the popup alert window when I open the pdf. I tried to open it in Adobe Reader DC and also in Foxit. I get the same warning:

This document is trying to print. Do you want to allow this?

Does anyone know how to suppress this popup window? Thank you.

pisoir
  • 192
  • 3
  • 13

1 Answers1

1

You can't, not without the user's consent or opt in. You can make the script print silently under one of the following conditions but in each case, the user would need to opt in by doing one of the following.

  1. The script that will allow you to call a trusted function to print silently needs to be installed on the user's machine in a privileged folder.
  2. The document can be saved to a privileged folder.
  3. You can ask the user to add your domain to the list of privileged domains.
    1. Sign the document and ask the user to trust your certificate.

See the Privileged Context section of the Acrobat JavaScript documentation http://help.adobe.com/en_US/acrobat/acrobat_dc_sdk/2015/HTMLHelp/Acro12_MasterBook/JS_API_AcroJSPreface/Privileged_context.htm

joelgeraci
  • 4,606
  • 1
  • 12
  • 19
  • Since the user may receive the pdf also by email, to me it seems that only point 4. is possible. But then my next question is how can I sign a pdf file from a php script? – pisoir Feb 03 '17 at 18:08
  • I'm not sure that there are any PHP libraries that can sign PDF, however, you can use any number of libraries to do that and use the PHP exec to call it via a command line. But even so, the user would need to trust your cert before they can silently print. That said, if I opened a PDF and it just started to print, I'd be pretty angry. – joelgeraci Feb 03 '17 at 18:42
  • @joelgeraci is right! If the document is certified and the certificate is trusted to"Perform privileged system operations" it works very well - I just tested it (I am going to delete my answer in favor of this one). If you need to create this task in pure PHP you may check out our [signature solutions](https://www.setasign.com/signer). – Jan Slabon Feb 03 '17 at 21:36
  • @JanSlabon Great to hear that. I will look at this direction then. Thanks you two. – pisoir Feb 05 '17 at 21:01
  • If you're going to use certificates to establish trust, it's worth choosing a certificate vendor from the Adobe Approve Trust List (AATL) so that when any user receives a digitally signed document from a signer whose digital certificate can trace its lineage (chain) back to a certificate on the AATL, that signature will automatically be trusted. – joelgeraci Feb 05 '17 at 22:11
  • @joelgeraci but I guess (hope) a AATL certificate will not have "privileged system operations" enabled by default! So the recipient will have to adjust the trust settings at least the first time he/she wants to allow the auto-printing for further documents. So after all a non-AATL certificate could do the job, too. – Jan Slabon Feb 06 '17 at 11:32
  • 1
    @JanSlabon - Yes. The user would need to set their trust preferences one time first. Again, they still need to opt-in in some form. A great article on how this all works is located here... http://www.pdfscripting.com/public/Trust-and-Privilege-in-Acrobat-Scripts.cfm#EnSecC – joelgeraci Feb 06 '17 at 16:56