2009-09-08 5 views
3

Une application Ruby on Rails aura accès à un certain nombre d'images et de polices. Les images sont des composants d'une mise en page visuelle qui seront stockés séparément sous la forme d'un ensemble de règles. Les règles spécifient les dimensions du document avec lesquelles les images sont utilisées et où. L'application doit prendre ces règles, récupérer les images et générer un fichier PDF prêt à être imprimé ou envoyé par courrier électronique.Planification de la création de fichiers PDF dans Ruby on Rails

Les polices seront également importantes. L'utilisateur doit personnaliser la mise en page en saisissant du texte qui sera inclus dans le PDF. Le fichier PDF doit donc également contenir la police souhaitée afin que le document s'affiche de manière identique sur différentes machines.

Chaque fichier PDF peut contenir plusieurs pages. Chaque page peut avoir des dimensions différentes mais ce n'est pas essentiel. D'une manière ou d'une autre, la capacité de manipuler les dimensions et les marges données par le PDF est essentielle.

La seule chose qui doit être régulièrement changée est le texte. Si cela prend trop de développement, l'application peut stocker les mises en page dans des fichiers PDF tiers et éditer le contenu textuel directement. Par la suite cependant, cela se révélera trop restrictif sur la fonctionnalité des applications prévues, donc je préférerais l'application pour générer le PDF lui-même.

Je n'ai jamais travaillé avec des fichiers PDF auparavant et, pour la plupart, je n'ai jamais eu à envoyer quoi que ce soit à l'utilisateur en dehors de son moniteur. Un support imprimé pourrait nécessiter une approche très différente pour obtenir les meilleurs résultats. Si quelqu'un a des conseils sur la façon de modéliser le format PDF, il serait vraiment apprécié. Les aspects techniques de l'impression tels que le fond perdu, la résolution et la couleur ont déjà été pris en compte dans les mises en page et les images. Je suis conscient que PDF est un format de fichier propriétaire et que je veux utiliser un logiciel libre ou open source. J'ai vu un certain nombre de bibliothèques Ruby pour générer des fichiers PDF, mais parce que je suis nouveau sur cette scène, je n'ai aucun moyen de les comparer de manière fiable et trop peu de temps pour les implémenter et les tester tous. J'ai aussi la possibilité d'utiliser C pour gérer cette fonctionnalité et si cela est intensif, cela pourrait être préférable.

À quoi dois-je penser et comment devrais-je planifier pour mettre en œuvre cela?

Répondre

3

Générer des PDF est un peu ennuyeux mais il y a beaucoup de choses là-bas comme prawn ou prince. J'aime la deuxième option parce que vous pouvez utiliser HTML/CSS pour générer votre PDF mais je ne l'ai jamais testé. La crevette s'est avérée utile et efficace.

edit: noter que Prince est en fait assez cher

+0

Oui, j'ai aussi regardé les travaux de prince pour la course de l'usine "voir au pdf". Pour la tâche en cours cependant, crevette a toutes les fonctionnalités nécessaires et semble le rendre plus simple que je l'avais prévu. – deau

+0

Selon le lien que vous m'avez donné (par exemple) prince passe le test acid2. Il semble que tout ce que vous avez en HTML, vous pouvez avoir en PDF pour le coût d'une gemme. Doux! – deau

+0

Oui prince semble assez impressionnant :) – marcgg

1

J'ai travaillé sur un projet qui a généré quelques PDF très simples il y a quelques mois. Je pensais que c'était une douleur totale dans le cul, mais il a été fait grâce à: Prawn et prawnto. Prawn est une bibliothèque PDF et prawnto est un plugin Rails pratique.

Bonne chance.

+0

« Je pensais que c'était une douleur totale dans le cul, mais il fait grâce à mais j'ai: Prawn et prawnto. » Juste en train de lire ça maintenant est un poids sur mes épaules :) – deau

1

Il y a quelques différents Railscasts utilisant PDF::Writer et Prawn.

+0

+1 pour ces écrans m8, une excellente ressource :-) – deau

1

Je suggère également d'utiliser ruby ​​pour formater par programme un fichier OpenOffice .odt. Il est plus facile de formater odt puis de dessiner des cadres de délimitation dans Prawn.

http://github.com/ngty/clamsy