javascriptpdf

Print PDF directly from JavaScript


I am building a list of PDFs in HTML. In the list I'd like to include a download link and a print button/link. Is there some way to directly open the Print dialog for the PDF without the user seeing the PDF or opening a PDF viewer?

Some variation of downloading the PDF into a hidden iframe and triggering it to print with JavaScript?


Solution

  • Based on comments below, it no longer works in modern browsers
    This question demonstrates an approach that might be helpful to you: Silent print an embedded PDF

    It uses the <embed> tag to embed the PDF in the document:

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

    Then you call the .print() method on the element in Javascript when the PDF is loaded:

    function printDocument(documentId) {
        var doc = document.getElementById(documentId);
    
        //Wait until PDF is ready to print    
        if (typeof doc.print === 'undefined') {    
            setTimeout(function(){printDocument(documentId);}, 1000);
        } else {
            doc.print();
        }
    }
    

    You could place the embed in a hidden iframe and print it from there, giving you a seamless experience.