D'après les commentaires ci-dessous, cela ne fonctionne plus dans les navigateurs modernes
Cette question illustre une approche qui pourrait vous être utile: Impression silencieuse d'un PDF intégré
Il utilise la <embed>
balise pour incorporer le PDF dans le document:
<embed
type="application/pdf"
src="path_to_pdf_document.pdf"
id="pdfDocument"
width="100%"
height="100%" />
Ensuite, vous appelez la .print()
méthode sur l'élément en Javascript lorsque le PDF est chargé:
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();
}
}
Vous pouvez placer l'intégration dans une iframe cachée et l'imprimer à partir de là, vous offrant une expérience transparente.
Voici une fonction pour imprimer un PDF à partir d'une iframe.
Il vous suffit de transmettre l'URL du PDF à la fonction. Il créera un iframe et déclenchera l'impression une fois le PDF chargé.
Notez que la fonction ne détruit pas l'iframe. Au lieu de cela, il le réutilise chaque fois que la fonction est appelée. Il est difficile de détruire l'iframe car il est nécessaire jusqu'à ce que l'impression soit terminée, et la méthode d'impression n'a pas de support de rappel (pour autant que je sache).
la source
setTimeout
, la fonction d'impression échouera parfois. Je ne sais pas pourquoi et j'espère que quelqu'un le découvrira.onafterprint
. Je crains un peu que la réutilisation d'une iframe puisse introduire des conditions de concurrence où quelqu'un clique rapidement sur deux boutons et finit par imprimer le deuxième PDF deux fois car l'URL de l'iframe avait déjà été échangée avant l'apparition de la première boîte de dialogue d'impression.Téléchargez Print.js depuis http://printjs.crabbly.com/
la source
https://github.com/mozilla/pdf.js/
pour une démo en direct http://mozilla.github.io/pdf.js/
c'est probablement ce que vous voulez, mais je ne peux pas voir l'intérêt de cela puisque les navigateurs modernes incluent une telle fonctionnalité, aussi cela fonctionnera terriblement lent sur les appareils de faible puissance comme les appareils mobiles qui, en passant, ont leurs propres plugins et applications optimisés .
la source
J'ai utilisé cette fonction pour télécharger le flux pdf du serveur.
la source
Solution de navigateur croisé pour l'impression de pdf à partir de la chaîne base64:
.
BONUS - Ouverture du fichier blob dans un nouvel onglet pour IE11
Si vous êtes capable de faire un prétraitement de la chaîne base64 sur le serveur, vous pouvez l'exposer sous une URL et utiliser le lien dans
printJS
:)la source