J'ai le code html suivant:
<!DOCTYPE html>
<html>
<body>
<p>don't print this to pdf</p>
<div id="pdf">
<p><font size="3" color="red">print this to pdf</font></p>
</div>
</body>
</html>
Tout ce que je veux faire, c'est imprimer au format pdf tout ce qui se trouve dans la div avec un identifiant "pdf". Cela doit être fait en utilisant JavaScript. Le document "pdf" devrait alors être automatiquement téléchargé avec un nom de fichier "foobar.pdf"
J'utilise jspdf pour ce faire, mais la seule fonction qu'il possède est "text" qui n'accepte que les valeurs de chaîne. Je veux soumettre du HTML à jspdf, pas du texte.
javascript
jspdf
John Crawford
la source
la source
fromHTML
fonction; voir l'exemple "HTML Renderer" sur: mrrio.github.io/jsPDFRéponses:
jsPDF est capable d'utiliser des plugins. Afin de lui permettre d'imprimer du HTML, vous devez inclure certains plugins et devez donc faire ce qui suit:
Si vous souhaitez ignorer certains éléments, vous devez les marquer avec un ID, que vous pouvez ensuite ignorer dans un gestionnaire d'élément spécial de jsPDF. Par conséquent, votre code HTML devrait ressembler à ceci:
Ensuite, vous utilisez le code JavaScript suivant pour ouvrir le PDF créé dans un PopUp:
Pour moi, cela a créé un PDF agréable et bien rangé qui ne comprenait que la ligne «imprimer ceci en pdf».
Veuillez noter que les gestionnaires d'éléments spéciaux ne traitent que les ID dans la version actuelle, ce qui est également indiqué dans un problème GitHub . Il est dit:
Par conséquent, le remplacement de «#ignorePDF» par des sélecteurs de classe comme «.ignorePDF» n'a pas fonctionné pour moi. Au lieu de cela, vous devrez ajouter le même gestionnaire pour chaque élément, que vous souhaitez ignorer comme:
À partir des exemples, il est également indiqué qu'il est possible de sélectionner des balises comme «a» ou «li». Cela pourrait être un peu restrictif pour la plupart des cas d'utilisation:
Une chose très importante à ajouter est que vous perdez toutes vos informations de style (CSS). Heureusement, jsPDF est capable de formater joliment h1, h2, h3 etc., ce qui était suffisant pour mes besoins. De plus, il imprimera uniquement le texte dans les nœuds de texte, ce qui signifie qu'il n'imprimera pas les valeurs des zones de texte et similaires. Exemple:
la source
<div>
, qui pourrait être l'un des centaines - il doit donc marquer tous les éléments DOM indésirables ??C'est la solution simple. Cela fonctionne pour moi.Vous pouvez utiliser le concept d'impression javascript et l'enregistrer simplement au format pdf.
la source
Vous pouvez utiliser autoPrint () et définir la sortie sur 'dataurlnewwindow' comme ceci:
la source
si vous avez besoin de télécharger le pdf d'une page spécifique, ajoutez simplement un bouton comme celui-ci
utilisez window.print () pour imprimer votre page entière pas seulement un div
la source
document.querySelector("#myIframe").contentWindow.print()
Comme mentionné, vous devez utiliser jsPDF et html2canvas . J'ai également trouvé une fonction dans les problèmes de jsPDF qui divise automatiquement votre pdf en plusieurs pages ( sources )
la source
Une façon consiste à utiliser la fonction window.print (). Qui ne nécessite aucune bibliothèque
Avantages
Aucune bibliothèque externe requise.
2.Nous pouvons également imprimer uniquement certaines parties du corps.
Pas de conflits css et de problèmes js.
4.Core fonctionnalité html / js
--- Ajoutez simplement le code ci-dessous
CSS à
Code JS - Appelez la fonction bewlow sur un clic btn
Remarque: utilisez! Important dans chaque objet css
Exemple -
la source
j'utilise jspdf et html2canvas pour le rendu css et j'exporte le contenu de div spécifique car c'est mon code
la source
http://...domain.../path.css
ou ainsi. Il crée un document HTML séparé et il n'a pas de contexte principal.Cela me sert depuis des années maintenant:
la source
<body >
il a besoin: PSi vous souhaitez exporter une table, vous pouvez jeter un œil à cet exemple d'exportation fourni par le widget Shield UI Grid.
Cela se fait en étendant la configuration comme ceci:
la source
Utilisez pdfMake.js et ce Gist .
(J'ai trouvé le Gist ici avec un lien vers le paquet html-to-pdfmake , que je par ne pas utiliser pour l'instant.)
Après avoir
npm install pdfmake
sauvegardé le Gist,htmlToPdf.js
je l'utilise comme ceci:Remarques:
pdfMake
« sgetBuffer()
fonction de), le tout depuis le navigateur. Le pdf généré s'avère plus agréable pour ce type de code HTML qu'avec d'autres solutions que j'ai essayées.jsPDF.fromHTML()
suggérés dans la réponse acceptée, car cette solution est facilement confondue par des caractères spéciaux dans mon HTML qui sont apparemment interprétés comme une sorte de balisage et gâchent totalement le PDF résultant.jsPDF.from_html()
fonction , à ne pas confondre avec celle de la réponse acceptée) n'est pas une option pour moi car je veux que le texte du PDF généré soit collable, tandis que les solutions basées sur le canevas génèrent des PDF basés sur des bitmaps.la source
J'ai pu obtenir jsPDF pour imprimer des tables créées dynamiquement à partir d'un div.
Fonctionne très bien avec Chrome et Firefox ... le formatage est entièrement explosé dans IE.
J'ai également inclus ceux-ci:
la source
Pour capturer div en PDF, vous pouvez utiliser la solution https://grabz.it . Il dispose d'une API JavaScript simple et flexible qui vous permettra de capturer le contenu d'un seul élément HTML tel qu'un div ou un span
Pour le mettre en œuvre, vous devrez d'abord obtenir une clé d'application et un secret et télécharger le SDK (gratuit).
Et maintenant un exemple.
Disons que vous avez le HTML:
Pour capturer ce qui se trouve sous l'ID des fonctionnalités, vous devrez:
Veuillez noter le
target: #feature
.#feature
est votre sélecteur CSS, comme dans l'exemple précédent. Maintenant, lorsque la page est chargée, une capture d'écran d'image sera désormais créée au même emplacement que la balise de script, qui contiendra tout le contenu de la fonctionnalité div et rien d'autre.Voici d' autres configurations et personnalisations que vous pouvez faire pour le mécanisme de capture d'écran div, veuillez les vérifier ici
la source