Génération de fichiers PDF avec JavaScript

J'essaie de convertir des données XML en fichiers PDF à partir d'une page web et j'espérais pouvoir le faire entièrement en JavaScript. Je dois être capable de dessiner du texte, des images et des formes simples. J'aimerais pouvoir le faire entièrement dans le navigateur.

208
demandé sur Xufox 2009-04-12 23:27:31

6 réponses

Je viens d'écrire une bibliothèque appelée jsPDF qui génère des fichiers PDF en utilisant Javascript seul. Il est encore très jeune, et je vais ajouter des fonctionnalités et des corrections de bugs bientôt. Vous avez également quelques idées de solutions de contournement dans les navigateurs qui ne prennent pas en charge les URI de données. Il est autorisé sous une licence libérale du MIT.

Je suis tombé sur cette question avant de commencer à l'écrire et je pensais revenir et vous faire savoir :)

Générer des fichiers PDF en Javascript

Exemple créer un " bonjour Monde " fichier PDF.

// Default export is a4 paper, portrait, using milimeters for units
var doc = new jsPDF()

doc.text('Hello world!', 10, 10)
doc.save('a4.pdf')
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.3.5/jspdf.debug.js"></script>
349
répondu James Hall 2018-05-28 12:18:46

Une autre bibliothèque javascript à mentionner est pdfmake .

La prise en charge du navigateur ne semble pas aussi forte que jsPDF, et il ne semble pas y avoir d'option pour les formes, mais les options de formatage du texte sont plus avancées que les options actuellement disponibles dans jsPDF.

100
répondu mg1075 2014-05-07 12:13:18

Je maintiens PDFKit , qui alimente également pdfmake (déjà mentionné ici). Cela fonctionne à la fois dans Node et dans le navigateur, et prend en charge un tas de choses que les autres bibliothèques ne font pas:

  • Intégration de polices sous-définies, avec prise en charge de l'unicode.
  • beaucoup de trucs de mise en page avancée (colonnes, saut de page, saut de ligne unicode complet, texte riche de base,etc.).
  • travailler sur encore plus de polices pour la typographie avancée (ligatures OpenType / AAT, substitution contextuelle, etc.). À venir: voir la branche fontkit si vous êtes intéressé.
  • plus de trucs graphiques: dégradés, etc.
  • construit avec des outils modernes comme browserify et streams. Utilisable à la fois dans le navigateur et le nœud.

Vérifier http://pdfkit.org/ pour un tutoriel complet pour voir par vous - même ce que PDFKit peut faire. Et pour un exemple de quels types de documents peuvent être produits, consultez les documents en tant que PDF généré à partir de certains fichiers Markdown en utilisant PDFKit lui-même: http://pdfkit.org/docs/guide.pdf.

Vous pouvez aussi essayer de manière interactive dans le navigateur ici: http://pdfkit.org/demo/browser.html.

46
répondu devongovett 2015-02-05 03:35:12

Un Autre projet intéressant est texlive.js .

Il vous permet de compiler (La)TeX au format PDF dans le navigateur.

7
répondu Kpym 2016-05-30 13:39:01

Vous pouvez utiliser ce service gratuit en ajoutant un lien qui crée un pdf à partir de n'importe quelle url (par exemple http://www.phys.org):

Http://freehtmltopdf.com/?convert=http%3A%2F%2Fwww.phys.org&size=US_Letter&orientation=portrait&framesize=800&language=en

2
répondu numbtongue 2015-04-22 01:57:36

Même si vous pouviez générer le PDF en mémoire en JavaScript, vous auriez toujours la question de savoir comment transférer ces données à l'utilisateur. Il est difficile pour JavaScript de simplement pousser un fichier à l'utilisateur.

Pour obtenir le fichier À l'utilisateur, vous souhaitez faire un serveur soumettre afin d'obtenir le navigateur pour afficher la boîte de dialogue enregistrer.

Cela dit, il n'est vraiment pas trop difficile de générer des fichiers PDF. Il suffit de lire la spec.

-15
répondu Frank Krueger 2009-04-12 23:21:16