7
votes

Comment fonctionne la fonction d'impression JavaScript? Puis-je créer un document à l'aide de JavaScript et imprimer?

Je sais que vous pouvez utiliser la fenêtre.Print () pour imprimer la page en cours ... Mais ce que je veux savoir, c'est que je puisse construire un document à l'aide de JavaScript afin de le remplir avec des données et de l'imprimer?

Tout comme vous pouvez avoir HTML / XML comme objet JavaScript, pouvez-vous faire quelque chose de similaire à celui-ci: xxx

Je ne me soucie pas vraiment de l'ajout de couleurs tout ça Je veux juste formater un document, le peupler avec des données et l'imprimer. Est-ce possible?


0 commentaires

8 Réponses :


0
votes

Si vous le faites pendant que le document est chargé, vous pouvez utiliser document.write pour écrire le document actuel, puis l'imprimer.

Si la page a fini de chargement, vous pouvez utiliser des fonctions pour manipuler le DOM ou utiliser de préférence une bibliothèque telle que JQuery < / a> ou prototype , puis imprimez le document actuel.


0 commentaires

1
votes

impression () appelle essentiellement la boîte de dialogue Imprimer natif pour une fenêtre donnée.

Mais comme vous pensez, cela fonctionnera sur n'importe quelle fenêtre ou (i) Cadre. P>

Ainsi Si vous écrivez du contenu sur un cadre, vous pouvez ensuite appeler ceci pour l'imprimer. P>

window.printPreview();


0 commentaires

6
votes

Imprimer () est une méthode sur l'objet de la fenêtre. Si vous créez un document dans une fenêtre à l'aide de JavaScript, appelez imprimé sur cet objet de la fenêtre, il devrait fonctionner. xxx

Exemple modifié à partir de w3schools.com fenêtre ouverte de fenêtre.


4 commentaires

Vous pouvez également utiliser un iframe caché pour imprimer des documents cachés!


Cela ne semble pas fonctionner en chrome ou à l'opéra. Les deux navigateurs semblent imprimer la fenêtre mère lorsque vous êtes auto-empreintes () ou de fenêtre.Print () sont appelés sur une iframe cachée.


En fait, il ne semble pas fonctionner avec un iframe avec une hauteur et une largeur de 0px ...


Le premier lien est cassé.



3
votes

Ma première pensée:

Vous pouvez créer un IFrame programmatiquement, attribuez le code HTML à imprimé, appelez la fonction imprimer () code> sur le contexte de l'iframe.contentwindow, puis supprimez la iframe de la DOM: p>

function printHTML(input){
  var iframe = document.createElement("iframe"); // create the element
  document.body.appendChild(iframe);  // insert the element to the DOM 

  iframe.contentWindow.document.write(input); // write the HTML to be printed
  iframe.contentWindow.print();  // print it
  document.body.removeChild(iframe); // remove the iframe from the DOM
}

printHTML('<h1>Test!</h1>');


1 commentaires

Ne fonctionne pas dans IE. Si je me souviens bien, vous devez vous concentrer () la fenêtre avant d'l'imprimer, ou quelque chose de similaire.



1
votes

Pourquoi ne pas simplement faire tout ce qui est invisible pour media = Imprimer et ensuite rendre visible certains blocs avec votre code spécial?


0 commentaires

0
votes

Jack, avez-vous essayé la fenêtre.Print () à l'intérieur de l'iframe après avoir chargé le document?


1 commentaires

Vous devez d'abord mettre le document quelque part dans le DOM. Soit dans une nouvelle fenêtre ou un iframe. Sinon, l'impression imprimera la fenêtre actuelle, pas votre document.



0
votes

Il y a une solution simple disponible Pas besoin d'écrire une fonction et c'est - window.print ()

où vous souhaitez utiliser il suffit de mettre - onclick = "fenêtre.print ();" p>

Exemple P>

<a href="" onClick="window.print();">Print</a>


0 commentaires

0
votes

Il y a trois approches pour l'impression de deux qui fonctionneront.

  1. Imprimez toute la fenêtre: fenêtre.print (); fonctionnera.

  2. Imprimez uniquement un cadre spécifique: fenêtre.parent._frame_Id_.print (); fonctionnera.

  3. Imprimer A DocumentfraGment ne fonctionnera pas (au moins dans Firefox): Document.createDocumentFragment (). Imprimer (); // non défini


0 commentaires