Técharger un bloc div sous pdf en javascript
Résolu/Fermé
A voir également:
- Div to pdf
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Comment faire un pdf - Guide
- Save as pdf - Télécharger - Bureautique
- Pdf to jpg - Télécharger - PDF
- Qwerty to azerty - Guide
7 réponses
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
2 déc. 2021 à 21:53
2 déc. 2021 à 21:53
Bonjour
var bloc_to_print = $("#FormulaireModal #modal-body-to-print").html();
Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
525
2 déc. 2021 à 13:00
2 déc. 2021 à 13:00
Bonjour,
Est-ce que ton code actuel fonctionne ? Des erreurs dans la console js du navigateur ?
En plus de jQuery, est-ce que tu utilises un plugin pour pouvoir appeler la fonction print() sur un élément html (normalement la méthode print() en javascript ne peut être appelé sur l'objet window) ?
Si tu pouvais également partager le code html de la page et préciser un peu plus le résultat que tu souhaites (un exemple si possible), cela serait plus facile pour t'aider.
Bonne journée,
Est-ce que ton code actuel fonctionne ? Des erreurs dans la console js du navigateur ?
En plus de jQuery, est-ce que tu utilises un plugin pour pouvoir appeler la fonction print() sur un élément html (normalement la méthode print() en javascript ne peut être appelé sur l'objet window) ?
Si tu pouvais également partager le code html de la page et préciser un peu plus le résultat que tu souhaites (un exemple si possible), cela serait plus facile pour t'aider.
Bonne journée,
Bonjour.
Oui, le code actuel fonctionne. Seulement en dehors du print() , je dois également ajouter à l'évènement, la fonctionnalité télécharger. Une fois qu'on clique sur l'évènement, un pdf avec le div doit être téléchargé aussi.
Voici le html du bouton :
J'ai essayé avec jsPDF en suivant ce tutoriel : https://jsfiddle.net/user2314737/z437nxaq/
mais ça ne marche pas
Voici mon code jQuery
Et la librairie
Oui, le code actuel fonctionne. Seulement en dehors du print() , je dois également ajouter à l'évènement, la fonctionnalité télécharger. Une fois qu'on clique sur l'évènement, un pdf avec le div doit être téléchargé aussi.
Voici le html du bouton :
<button id="ImprimerFormulaire" data-dismiss="modal" type="button" Class="btn btn-default imprimer">Imprimer</button>
J'ai essayé avec jsPDF en suivant ce tutoriel : https://jsfiddle.net/user2314737/z437nxaq/
mais ça ne marche pas
Voici mon code jQuery
var docPDF = new jsPDF();
$("#FormulaireModal").on("click", "#ImprimerFormulaire", function (){
var bloc_to_print = $("#FormulaireModal #modal-body-to-print");
var nomFichier = $("#Nom").val() + ".pdf";
var actifVal = $("#Actif").is(":checked") === true ? "OUI" : "NON"
doc.fromHTML(
"<h1>Formulaire</h1>" +
"<h2 style='width: 100%; text-align: center;'>" + "Formulaire " + "</h2>" +
"<div>" +
"<p> Nom : " + $("#Nom").val() + " </p>" +
"<p> Description : " + $("#Description").val() + " </p>" +
"<p> Actif : " + actifVal + "</p>" +
bloc_to_print +
"</div>"
);
docPDF.save(nomFichier);
})
Et la librairie
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
Petite mise à jour. Maintenant je peux utiliser la libraire jsPDF. Il me manquait les installations nécessaire.
Le pdf est bien créee, et les premières lignes sont biens ajoutés. Seulement le bloc principal que j'avais mis dans la variable "bloc_to_print" ne s'affiche pas dans le pdf. Ça m'affiche [object object] à la place.
Merci de votre aide !
Le pdf est bien créee, et les premières lignes sont biens ajoutés. Seulement le bloc principal que j'avais mis dans la variable "bloc_to_print" ne s'affiche pas dans le pdf. Ça m'affiche [object object] à la place.
Merci de votre aide !
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
3 déc. 2021 à 12:01
3 déc. 2021 à 12:01
Actuellement tu utilises le code
avec : bloc_to_print le contenu HTML d'en élément de ta page....
Par contre, si tu as dedans des input, des select, des boutons ... il faut, comme pour tes champs "nom", "description", "actifVal", récupérer leur contenu pour les insérer dans ce que tu veux imprimer...
doc.fromHTML( "<h1>Formulaire</h1>" + "<h2 style='width: 100%; text-align: center;'>" + "Formulaire " + "</h2>" + "<div>" + "<p> Nom : " + $("#Nom").val() + " </p>" + "<p> Description : " + $("#Description").val() + " </p>" + "<p> Actif : " + actifVal + "</p>" + bloc_to_print + "</div>" );
avec : bloc_to_print le contenu HTML d'en élément de ta page....
Par contre, si tu as dedans des input, des select, des boutons ... il faut, comme pour tes champs "nom", "description", "actifVal", récupérer leur contenu pour les insérer dans ce que tu veux imprimer...
Le problème avec le bloc "bloc_to_print" est que c'est un formulaire dynamique. En fait, c'est l'utilisateur lui même qui crée son formulaire, ensuite visualise puis télécharge ou imprime à partir d'un bouton le formulaire.
Donc on ne peux pas savoir à l'avance le contenu de "bloc_to_print". Avec la fonction print () j'arrive à imprimer comme il se doit, mais je ne trouve pas un moyen de faire le téléchargement
Donc on ne peux pas savoir à l'avance le contenu de "bloc_to_print". Avec la fonction print () j'arrive à imprimer comme il se doit, mais je ne trouve pas un moyen de faire le téléchargement
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
Modifié le 3 déc. 2021 à 12:25
Modifié le 3 déc. 2021 à 12:25
La fonction "print" lance l'impression à travers le gestionnaire d'imprimante de l'ordinateur.
Pour générer le formulaire en PDF et le proposer au téléchargement, tu n'as pas d'autres choix que de générer le rendu toi même...
Si le formulaire est dynamique, il te suffit de boucler sur tous les éléments qu'il contient pour en récupérer le contenu..
par exemple :
Pour générer le formulaire en PDF et le proposer au téléchargement, tu n'as pas d'autres choix que de générer le rendu toi même...
Si le formulaire est dynamique, il te suffit de boucler sur tous les éléments qu'il contient pour en récupérer le contenu..
par exemple :
$('input, select').each( function(index){ var input = $(this); alert('Type: ' + input.attr('type') + 'Name: ' + input.attr('name') + 'Value: ' + input.val()); } );
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci ! Je viens de l'essayer.
Il me semble que les inputs sont ignorés par jsPDF. Même quand j'entre manuellement le input, il n'apparaît pas dans le pdf. Idem pour le css et bootstrap. De ce que j'ai compris il ne convertit que les textes dans le fichier. Les tables, input et css sont ignorés lors de la création.
Donc on ne peut pas auto-télécharger le pdf qu'on doit imprimer ?
Il me semble que les inputs sont ignorés par jsPDF. Même quand j'entre manuellement le input, il n'apparaît pas dans le pdf. Idem pour le css et bootstrap. De ce que j'ai compris il ne convertit que les textes dans le fichier. Les tables, input et css sont ignorés lors de la création.
Donc on ne peut pas auto-télécharger le pdf qu'on doit imprimer ?
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
3 déc. 2021 à 15:24
3 déc. 2021 à 15:24
D'où l'exemple que je t'ai donné...( qu'il faut adapter bien entendu ) pour aller récupérer le CONTENU de tes inputs ( le "VALUE" ) pour l'inclure dans la STRING que tu envoies à ta lib..
D'accord. Je ne pense pas qu'on se comprends. En réalité, je ne souhaites pas récupérer le contenu du input. Je souhaites afficher le input lui-même. Afficher exactement le formulaire que l'utilisateur voit à l'écran avec les labels, boutons et les champs de texte.
Quand je debug, on voit que le code pour créer les champs de textes avec les valeurs souhaitées sont là. Mais lors du téléchargement, ils sont ignorés car jsPDF n'affiche que du texte dans le pdf.
Quand je debug, on voit que le code pour créer les champs de textes avec les valeurs souhaitées sont là. Mais lors du téléchargement, ils sont ignorés car jsPDF n'affiche que du texte dans le pdf.
3 déc. 2021 à 11:31
Certains éléments s'affichent, mais pas les input et la mise en forme de ma page n'est pas prise en compte.
D'après mes recherches jsPDF() ne tient pas compte du css, et n'affiche que les textes.
Si vous avez d'autres alternatives à me proposer, je suis preneur.
Merci !