Approche la plus utilisée pour générer un rapport PDF (JavaScript, node.js)?

est-ce que quelqu'un qui a travaillé sur quelque chose comme ça peut décrire le processus général? Je suis vraiment confus maintenant. Par rapport, j'entends un document visuellement attrayant avec logo, tables, en-têtes et pieds de page, et les données seront récupérées dynamiquement.

Les approches que j'ai regardé sont:

  1. utiliser une bibliothèque côté serveur (node.js module) qui génère le PDF. Envoyer la représentation de chaîne de caractères comme réponse avec Content-Type: application/pdf. Problème: J'ai choisi PDFKit, mais ça ne marche pas et aucun contenu ne s'affiche. Il utilise PDF 1.3, qui est vieux.

  2. générer PDF côté client. Problème: la bibliothèque la plus populaire semble être jsPDF, mais elle n'est pas très capable de produire des documents sophistiqués.

  3. écrire le modèle dans le code source PDF et remplir les données du côté du serveur. Problème: l'encodage est bizarre, par exemple si je fais juste doc.text("1"), beaucoup de caractères indéchiffrables apparaissent juste pour la chaîne "1". Je suis très confus à propos de ça.

enfin, ce sera super utile si quelqu'un fournit un lien qui peut m'aider à comprendre l'encodage! C'est super confus pour moi.

toute expérience avec des tâches similaires est très appréciée!

14
demandé sur Erica Xu 2013-06-27 01:32:23

3 réponses

je n'ai pas fait personnellement, mais la première chose que je voudrais essayer serait:

  1. du côté du serveur construire dynamiquement le document HTML approprié et CSS
  2. Utiliser phantomJS pour rendre ce document
  3. dites à phantomJS de convertir ce document en PDF, enregistré dans un fichier temp
  4. renvoyez le PDF comme réponse HTTP en écrivant le fichier PDF temp au corps de réponse
  5. supprimer la température le fichier

si vous êtes aux prises avec des problèmes de type de contenu, de disposition de contenu, etc., vous ne devriez pas avoir à vous en inquiéter si vous avez un fichier pdf valide sur le disque et que vous n'avez qu'à écrire ces données dans la réponse HTTP. Avec les bons en-têtes, vous devriez être en mesure de demander au navigateur d'afficher le fichier PDF ou de le traiter comme un fichier à enregistrer en téléchargement.

14
répondu Peter Lyons 2013-06-27 16:50:15

en tant que membre de l'équipe de jsreport, je lui donnerais une chance.

jsreport la plate-forme fournit plusieurs façons de générer des rapports pdf. Le plus courant est de transformer html en pdf en utilisant phantomjs. jsreport compilera et affichera également les modèles HTML handlebars ou jsrender si cela est spécifié, il pourra intégrer des images, ajouter des en-têtes/pieds de page, exécuter des JavaScript personnalisés et plus encore.

vous pouvez jouer avec L'exemple" Hello World Phantom Pdf " et voir le les options que vous avez https://playground.jsreport.net

Lorsque vous avez terminé de jouer, vous pouvez utiliser jsreport en ligne ou télécharger et installer jsreport server à votre entreprise. Alors vous êtes prêt à appeler sa REST API et générer des rapports.

Plus de votre question

  • jsreport fournira le type de contenu correct dans la réponse pour pdf ou html. Vous pouvez simplement laisser le navigateur pour afficher le résultat
  • les données peuvent être envoyées à l'api jsreport ou retreivées par script personnalisé
8
répondu Jan Blaha 2014-03-16 13:40:28

Je ne sais pas quelle est l'approche la plus courante, mais personnellement j'aime créer un modèle HTML, le peupler dans mon code côté serveur, et puis utiliser wkhtmltopdf pour convertir le HTML en PDF. Si vous utilisez .NET vous devriez vérifier WkHtmlToXSharp

3
répondu AlliterativeAlice 2017-04-07 15:25:19