Quelle est la meilleure façon d'imprimer le contenu d'une DIV?
javascript
jquery
html
printing
usertest
la source
la source
Réponses:
Légers changements par rapport à la version précédente - testé sur CHROME
la source
mywindow.document.write(data);
Ajoutez ceci:mywindow.document.write('<script type="text/javascript">$(window).load(function() { window.print(); window.close(); });</script>');
Et supprimez:mywindow.print();
etmywindow.close();
Je pense qu'il y a une meilleure solution. Faites en sorte que votre div à imprimer couvre tout le document, mais uniquement lorsqu'il est imprimé:
la source
Bien que cela ait été dit par @gabe , si vous utilisez jQuery, vous pouvez utiliser mon
printElement
plugin.Il y a un exemple ici , et plus d'informations sur le plugin ici .
L'utilisation est assez simple, il suffit de saisir un élément avec un sélecteur jQuery et de l'imprimer:
J'espère que ça aide!
la source
En utilisant Jquery, utilisez simplement cette fonction:
Votre bouton d'impression ressemblera à ceci:
Modifier: si vous avez des données de formulaire que vous devez conserver, le clone ne les copiera pas, il vous suffira donc de récupérer toutes les données du formulaire et de les remplacer après la restauration, comme suit:
la source
el
est terrible, surtout depuis que vous utilisez jQ. Beaucoup mieux pour simplement passer leselector
et se débarrasser du codé en dur#
el
. Je pense que la commande d'impression est envoyée lorsque le corps est en cours de restauration.À partir d'ici http://forums.asp.net/t/1261525.aspx
la source
J'ai utilisé la
Bill Paetzke
réponse pour imprimer un div contenant des images, mais cela ne fonctionnait pas avec Google Chromej'avais juste besoin d'ajouter cette ligne
myWindow.onload=function(){
pour le faire fonctionner et voici le code completaussi si quelqu'un a juste besoin d'imprimer un div avec id, il n'a pas besoin de charger jquery
voici du code javascript pur pour ce faire
j'espère que cela peut aider quelqu'un
la source
Cela imprimera la
div
zone souhaitée et remettra le contenu tel qu'il était.printdivname
est lediv
à imprimer.la source
Créez une feuille de style d'impression distincte qui masque tous les autres éléments à l'exception du contenu que vous souhaitez imprimer. Marquez-le en utilisant
'media="print"
lorsque vous le chargez:<link rel="stylesheet" type="text/css" media="print" href="print.css" />
Cela vous permet de charger une feuille de style complètement différente pour les impressions.
Si vous souhaitez forcer la boîte de dialogue d'impression du navigateur à apparaître pour la page, vous pouvez le faire comme ceci lors du chargement à l'aide de JQuery:
$(function() { window.print(); });
ou déclenché à partir de tout autre événement souhaité, tel qu'un utilisateur cliquant sur un bouton.
la source
Je pense que les solutions proposées jusqu'à présent présentent les inconvénients suivants:
J'ai amélioré les solutions ci-dessus. Voici quelque chose que j'ai testé qui fonctionne très bien avec les avantages suivants.
Points clés à noter:
la source
J'ai créé un plugin pour résoudre ce scénario. Je n'étais pas satisfait des plugins là-bas et j'ai décidé de rendre quelque chose de plus étendu / configurable.
https://github.com/jasonday/printThis
la source
La solution acceptée ne fonctionnait pas. Chrome imprimait une page vierge, car elle ne chargeait pas l'image à temps. Cette approche fonctionne:
Modifier: Il semble que la solution acceptée ait été modifiée après mon message. Pourquoi le downvote? Cette solution fonctionne également.
la source
Je sais que c'est une vieille question, mais j'ai résolu ce problème avec jQuery.
CSS
la source
Bien que la réponse @BC ait été la meilleure pour imprimer une seule page.
Mais pour imprimer plusieurs pages de format A4 en même temps avec ctrl + P, la solution suivante peut aider.
la source
la source
Voici mon plugin d'impression jquery
la source
Si vous souhaitez avoir tous les styles du document d'origine (y compris les styles en ligne), vous pouvez utiliser cette approche.
La mise en oeuvre:
la source
Remarque: cela fonctionne uniquement avec les sites compatibles jQuery
C'est très simple avec ce truc cool. Cela a fonctionné pour moi dans le navigateur Google Chrome . Firefox ne vous permettra pas d'imprimer au format PDF sans plugin.
La logique est simple. Nous créons une nouvelle balise de script et l'attachons devant la balise de fermeture du corps. Nous avons injecté une extension d'impression jQuery dans le HTML. Modifiez myDivWithStyles avec votre propre ID de balise Div. Il faut maintenant se soucier de préparer une fenêtre virtuelle imprimable.
Essayez-le sur n'importe quel site. Seule mise en garde est parfois écrite de manière délicate CSS peut entraîner le manque de styles. Mais nous obtenons le contenu la plupart du temps.
la source
Dans Opera, essayez:
la source
Voici une solution IFrame qui fonctionne pour IE et Chrome:
la source
Créé quelque chose de générique à utiliser sur n'importe quel élément HTML
J'espère que cela t'aides.
la source
J'ai modifié la réponse @BillPaetski pour utiliser querySelector, ajouter du CSS facultatif, supprimer la balise H1 forcée et rendre le titre éventuellement spécifié ou extrait de la fenêtre. De plus, il n'imprime plus automatiquement et expose les composants internes afin qu'ils puissent être désactivés dans la fonction wrapper ou comme vous le souhaitez.
Les deux seules variables privées sont tmpWindow et tmpDoc bien que je pense que l'accès au titre, css et elem puisse varier, il faut supposer que tous les arguments de fonction sont privés.
Code: Usage:la source
<input>
éléments. Comment puis-je l'utiliser, y compris ce que l'utilisateur a tapé?<input>
,<select>
,<textarea>
compontents d'être leur valeur d'exécution. Il existe des alternatives, mais ce n'est pas un problème avec ce script, mais un problème avec le fonctionnement des navigateurs, et obtenir lainnerHTML
propriété des documents avec des entrées, du canevas, etc..attr('value',)
. Je l'ai même fait pour les zones de texte (en ajoutant) et les cases à cocher (.attr('checked',)
). Je suis désolé si je ne pensais pas assez à ce que je demandais.Le code ci-dessous copie tous les nœuds pertinents qui sont ciblés par le sélecteur de requête, copie sur leurs styles comme vu à l'écran, car de nombreux éléments parents utilisés pour cibler les sélecteurs css seront manquants. Cela provoque un peu de décalage s'il y a beaucoup de nœuds enfants avec beaucoup de styles.
Idéalement, vous auriez une feuille de style d'impression prête, mais c'est pour les cas d'utilisation où il n'y a pas de feuille de style d'impression à insérer et que vous souhaitez imprimer comme vu à l'écran.
Si vous copiez les éléments ci-dessous dans la console du navigateur sur cette page, tous les extraits de code de cette page seront imprimés.
la source
C'est vraiment un ancien post, mais voici ma mise à jour de ce que j'ai fait en utilisant la bonne réponse. Ma solution utilise également jQuery.
Le point de cela est d'utiliser une vue d'impression appropriée, d'inclure toutes les feuilles de style pour la mise en forme appropriée et également d'être pris en charge dans la plupart des navigateurs.
Plus tard, vous aurez simplement besoin de quelque chose comme ceci:
Essayez-le.
la source
Identique à la meilleure réponse, juste au cas où vous auriez besoin d'imprimer l'image comme je l'ai fait:
Si vous souhaitez imprimer l'image:
la source
load
événement dans la fenêtre contextuelle. Sans cela, vous imprimerez une page vierge car l'image n'est pas chargée. =>$(popup).load(function(){ popup.focus(); popup.print(); });
La meilleure façon de le faire serait de soumettre le contenu de la div au serveur et d'ouvrir une nouvelle fenêtre où le serveur pourrait mettre ce contenu dans la nouvelle fenêtre.
Si ce n'est pas une option, vous pouvez essayer d'utiliser un langage côté client comme javascript pour masquer tout sur la page sauf ce div, puis imprimer la page ...
la source