Silent print an embedded PDF

sourcerebels picture sourcerebels · Jun 10, 2009 · Viewed 97.3k times · Source

I have a web page with embedded PDF on it. My code looks like this:

<embed
    type="application/pdf"
    src="path_to_pdf_document.pdf"
    id="pdfDocument"
    width="100%"
    height="100%">
</embed>

I have this javascript code for print my PDF:

function printDocument(documentId) {

    //Wait until PDF is ready to print    
    if (typeof document.getElementById(documentId).print == 'undefined') {

        setTimeout(function(){printDocument(documentId);}, 1000);

    } else {

        var x = document.getElementById(documentId);
        x.print();
    }
}

When this code is executed Acrobat plug-in opens the well-known print dialog. Something like this:

PrintDialog

Two questions:

  • How to improve the way to detect that PDF is loaded and ready for print?
  • How to avoid showing print dialog?

A little more info about my system:

OS: Windows XP

Browser: Internet Explorer 7

PDF Plugin: Acrobat Reader 9

Answer

epascarello picture epascarello · Jun 10, 2009

You are not going to be able to print silently with plain old JavaScript. How would you like your printer to start printing out 100000000 pages of all black. Not a good thing. If you want to print silently and have it work for Internet Explorer only, there are ActiveX controls out there that can do it. This requires higher security settings for your page and for your users to really trust your site.