Comment envoyer un fichier pdf directement à l'imprimante en utilisant JavaScript?

comment envoyer un fichier PDF directement à l'imprimante en utilisant JavaScript?

j'ai trouvé deux réponses dans un forum:

<embed src="vehinvc.pdf" id = "Pdf1" name="Pdf1" hidden>
<a onClick="document.getElementById('Pdf1').printWithDialog()" style="cursor:hand;">Print file</a>

et

<OBJECT id = "Pdf2" name="Pdf2" CLASSID="clsid:CA8A9780-280D-11CF-A24D-444553540000" WIDTH="364" HEIGHT="290">
     <PARAM NAME='SRC' VALUE="file.pdf">
</OBJECT>
<a onClick="document.Pdf2.printWithDialog()">Print file</a> 

mais mon problème est qu'il ne fonctionne que sur IE, et ne fonctionne pas dans Firefox ou Chrome.

y a-t-il une solution?

25
demandé sur hims056 2011-08-16 09:49:02

5 réponses

je pense que cette bibliothèque de JavaScript pourrait vous aider:

ça s'appelle Print.js

Tout D'Abord Inclure

<script src="print.js"></script>
<link rel="stylesheet" type="text/css" href="print.css">

l'usage de base est d'appeler printJS() et de passer dans un PDF url du document: printJS('docs/PrintJS.pdf')

ce que j'ai fait était quelque chose comme ceci, cela montrera aussi "Chargement...."si le document PDF est trop grand.

<button type="button" onclick="printJS({printable:'docs/xx_large_printjs.pdf', type:'pdf', showModal:true})">
    Print PDF with Message
</button>

Cependant gardez à l'esprit que:

Firefox ne permet pas actuellement d'imprimer des documents PDF en utilisant iframes. Il y a un bug ouvert dans le site Web de Mozilla à ce sujet. Lors de L'utilisation de Firefox, Imprimer.js ouvrira le fichier PDF dans un nouvel onglet.

7
répondu Zakawat 2017-11-30 09:10:35

Il y a deux étapes que vous devez prendre.

tout d'abord, vous devez mettre le PDF dans une iframe.

  <iframe id="pdf" name="pdf" src="document.pdf"></iframe>

Pour imprimer l'iframe, vous pouvez regarder les réponses ici:

Print iframe contents only

si vous voulez imprimer l'iframe automatiquement après le chargement du PDF, vous pouvez ajouter un handler onload au <iframe> :

  <iframe onload="isLoaded()" id="pdf" name="pdf" src="document.pdf"></iframe>

le chargeur peut ressembler à ceci:

function isLoaded()
{
  var pdfFrame = window.frames["pdf"];
  pdfFrame.focus();
  pdfFrame.print();
}

cela affichera la boîte de dialogue Imprimer du navigateur, puis imprimer uniquement le document PDF lui-même. (Personnellement, j'utilise le gestionnaire onload pour activer un bouton "imprimer" de sorte que l'utilisateur peut décider d'imprimer le document, ou pas).

j'utilise ce code à peu près mot à mot dans Safari et Chrome, mais je ne l'ai pas encore essayé sur IE ou Firefox.

6
répondu Doctor Eval 2017-05-23 11:46:26

Essayez ceci: Avoir un bouton/lien qui ouvre une page web dans une nouvelle fenêtre) avec juste le fichier pdf incorporé, et d'imprimer la page web.

dans le chef de la page principale:

<script type="text/javascript">
function printpdf() 
{
myWindow=window.open("pdfwebpage.html");
myWindow.close;  //optional, to close the new window as soon as it opens
//this ensures user doesn't have to close the pop-up manually
}
</script>

et dans le corps de la page principale:

<a href="printpdf()">Click to Print the PDF</a>

à l'Intérieur de pdfwebpage.html:

<html>
<head>    
</head>

<body onload="window.print()">
<embed src="pdfhere.pdf"/>

</body>
</html>
5
répondu Dhruv Murarka 2013-08-27 16:42:26

une fonction pour héberger le déclencheur d'impression...

function printTrigger(elementId) {
    var getMyFrame = document.getElementById(elementId);
    getMyFrame.focus();
    getMyFrame.contentWindow.print();
}

un bouton donnant accès à l'utilisateur...

(an onClick on an a or button or input or whatever you wish)

<input type="button" value="Print" onclick="printTrigger('iFramePdf');" />
an iframe pointing to your PDF...

<iframe id="iFramePdf" src="myPdfUrl.pdf" style="dispaly:none;"></iframe>

plus : http://www.fpdf.org/en/script/script36.php

0
répondu Joe Solutions 2011-08-16 15:37:12
<?php

$browser_ver = get_browser(null,true);
//echo $browser_ver['browser'];

if($browser_ver['browser'] == 'IE') {
?>

<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><strong class="highlight">pdf</strong> <strong class="highlight">print</strong> test</title>
<style>
html { height:100%; }
</style>
<<strong class="highlight">script</strong>>
function printIt(id){
var <strong class="highlight">pdf</strong> = document.getElementById("samplePDF");
<strong class="highlight">pdf</strong>.click();
<strong class="highlight">pdf</strong>.setActive();
<strong class="highlight">pdf</strong>.focus();
<strong class="highlight">pdf</strong>.print();
}
</script>
</head>

<body style="margin:0; height:100%;">

<embed id="samplePDF" type="application/pdf" src="/pdfs/2010/dash_fdm350.pdf" width="100%" height="100%" />
<button onClick="printIt('samplePDF')"><strong class="highlight">Print</strong></button>


</body>
</html>

<?php
} else {
?>
<HTML>
<<strong class="highlight">script</strong> Language="javascript">

function printfile(id)
{ 
window.frames[id].focus();
window.frames[id].print();
} 

</script>
<BODY marginheight="0" marginwidth="0">

<iframe src="/pdfs/2010/dash_fdm350.pdf" id="objAdobePrint" name="objAdobePrint" height="95%" width="100%" frameborder=0></iframe><br>

<input type="button" value="<strong class="highlight">Print</strong>" onclick="javascript<b></b>: printfile('objAdobePrint');">

</BODY>
</HTML>
<?php
}
?>
-1
répondu Joe Solutions 2011-08-16 18:16:31