web-dev-qa-db-fra.com

Impression silencieuse et intégrée PDF

J'ai une page Web avec PDF incorporée dessus. Mon code ressemble à ceci:

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

J'ai ce code javascript pour imprimer mon 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();
    }
}

Lorsque ce code est exécuté, le plug-in Acrobat ouvre la boîte de dialogue d'impression bien connue. Quelque chose comme ça:

PrintDialog

Deux questions:

  • Comment améliorer la façon de détecter que PDF est chargé et prêt pour l'impression?
  • Comment éviter d'afficher la boîte de dialogue d'impression?

Un peu plus d'informations sur mon système:

OS: Windows XP

Navigateur: Internet Explorer 7

Plugin PDF: Acrobat Reader 9

24
sourcerebels

Vous ne pourrez pas imprimer en silence avec du vieux JavaScript simple. Comment aimeriez-vous que votre imprimante commence à imprimer 100000000 pages de noir? Pas une bonne chose. Si vous souhaitez imprimer en mode silencieux et le faire fonctionner pour Internet Explorer uniquement, il existe des contrôles ActiveX qui peuvent le faire. Cela nécessite des paramètres de sécurité plus élevés pour votre page et pour que vos utilisateurs aient vraiment confiance en votre site.

18
epascarello

Cela est possible dans un environnement Intranet fiable.

<object id="pdfDoc" style="position:absolute;z-index:-1;" name="pdfDoc" classid="clsid:CA8A9780-280D-11CF-A24D-444553540000" width="900px" height="100%">
        <param name="SRC" value="yourdoc.pdf" />
    </object>

<input type="button" ... onclick="pdfDoc.printAll();" />

Cela contournera la boîte de dialogue d'impression et enverra directement à l'imprimante par défaut.

4
PushCode

Je me demande si vous devez réellement attendre avant d'imprimer - le travail d'impression ne s'en occupera-t-il pas pour vous? Et j'espère vraiment qu'aucun navigateur moderne ne vous permettra (ou n'importe quel site Web d'ailleurs) d'imprimer sans cette boîte de dialogue de confirmation (certains anciens navigateurs le faisaient il y a longtemps).

1
Arjan

Vous pouvez le faire dans Firefox en modifiant about:config. Ajouter print.always_print_silent et définissez-le sur true.

1
mike