Je sais comment ouvrir une page web dans une nouvelle fenêtre et ajouter du javascript donc la boîte de dialogue imprimer s'affiche. Est-il un moyen de faire quelque chose de similaire avec un fichier PDF?
Réponses
Trop de publicités?J'ai l'habitude de faire quelque chose de similaire à l'approche adoptée par la Façon d'Utiliser le JavaScript pour Imprimer un fichier PDF (eHow.com), à l'aide d'un iframe
.
-
une fonction à la maison de l'impression de déclenchement...
function printTrigger(elementId) { var getMyFrame = document.getElementById(elementId); getMyFrame.focus(); getMyFrame.contentWindow.print(); }
-
un bouton pour donner à l'utilisateur l'accès...
(un
onClick
sura
oubutton
ouinput
ou ce que vous voulez)<input type="button" value="Print" onclick="printTrigger('iFramePdf');" />
-
une iframe pointant vers votre PDF...
<iframe id="iFramePdf" src="myPdfUrl.pdf" style="display:none;"></iframe>
Bonus Idée #1 - Créer l' iframe
et l'ajouter à votre page à l'intérieur de l' printTrigger();
, de sorte que le PDF n'est pas chargé jusqu'à ce que l'utilisateur clique sur le bouton "Imprimer", puis le javascript peut-attaque! l'iframe et de déclencher la boîte de dialogue imprimer.
Bonus Idée #2 - le crédit Supplémentaire si vous désactivez votre bouton "Imprimer" et donner à l'utilisateur un peu de chargement spinner ou quelque chose après un clic sur ce dernier, afin qu'ils sachent quelque chose dans le processus au lieu de cliquer à plusieurs reprises!
Juste compris comment le faire dans le fichier PDF lui-même - si vous disposez d'acrobat pro, rendez-vous à vos pages de l'onglet, cliquez du bouton droit sur la miniature de la première page, et cliquez sur propriétés de la page. Cliquez sur l'onglet actions en haut de la fenêtre et en vertu de sélectionner le déclencheur de choisir la page ouverte. Sous sélectionner une action, choisissez "exécuter un script javascript". Puis dans le code javascript de la fenêtre, tapez ceci:
this.print({bUI: false, bSilent: true, bShrinkToFit: true});
Cela permettra d'imprimer votre document, sans un dialogue de l'imprimante par défaut sur votre machine. Si vous souhaitez que la boîte de dialogue imprimer, il suffit de changer bUI true, bSilent à faux, et, éventuellement, retirer l'option ajuster le paramètre.
L'Auto-impression PDF!
J'utilise named action
au lieu de javascript car javascript est souvent désactivée, et si elle n'est pas, il donne un avertissement.
Mon application web crée un fichier postscript, qui est ensuite converti avec ghostscript pdf. Je le veux pour imprimer automatiquement parce que l'utilisateur a déjà cliqué sur imprimer à l'intérieur de mon application. Avec les informations concernant nommé actions de @DSimon ci-dessus, j'ai recherché comment résoudre ce problème. Tout se résume à insérer la chaîne /Type /Action /S /Named /N /Print
au bon endroit dans le fichier pdf.
Je pensais écrire un petit utilitaire, mais il doit analyser le fichier pdf afin de trouver le nœud racine, insérez /OpenAction
avec une référence à un objet à l'action, et de recalculer le byte-compense en xref.
Mais ensuite, j'ai trouvé sur pdfmark qui est une extension de postscript pour exprimer, dans le langage postscript syntaxe, les expressions idiomatiques qui sont convertis au format pdf en Adobes distiller ou par ghostscript.
Depuis que je suis déjà en utilisant ghostscript, tout ce que j'ai à faire est d'ajouter la ligne suivante à la fin de mon fichier postscript:
%AUTOPRINT
[ /_objdef {PrintAction} /type /dict /OBJ pdfmark
[ {PrintAction} << /Type /Action /S /Named /N /Print >> /PUT pdfmark
[ {Catalog} << /OpenAction {PrintAction} >> /PUT pdfmark
et ghostscript permettra de créer de l'action, de lien, et au calcul de la référence croisée des décalages. (En postscript %
est un commentaire et PrintAction
est là mon nom pour l'objet)
En regardant le PDF, je vois qu'il a créé ce:
1 0 obj
<</Type /Catalog /Pages 3 0 R
/OpenAction 9 0 R
/Metadata 10 0 R
>>
endobj
9 0 obj
<</S/Named
/Type/Action
/N/Print>>endobj
1 0
est l'objet 1, révision 0 et 9 0
a fait l'objet de 9, révision 0. Dans le pdf de la remorque est dit qu'il est l'objet 1 qui est le nœud racine. Comme vous pouvez le voir il est une référence de l'objet 1, /OpenAction
pour exécuter l'objet 9 révision 0.
Avec ghostscript il est possible de convertir un pdf en postscript (pdf2ps), ajouter le texte ci-dessus, et de la convertir au format pdf avec ps2pdf
. Il convient de noter que les méta-informations sur le fichier pdf est perdu dans cette conversion. Je n'ai pas cherché plus dans ce.
Incorporer exemple de code:
<object type="application/pdf" data="example.pdf" width="100%" height="100%" id="examplePDF" name="examplePDF"><param name='src' value='example.pdf'/></object>
<script>
examplePDF.printWithDialog();
</script>
Peut-être l'imbécile avec les ids/noms. À l'aide d'adobe reader...