2010-02-14 9 views
4

Je souhaite générer automatiquement des fichiers PDF de confirmation de réservation en Python. La majeure partie du contenu sera statique (c'est-à-dire, logos, conditions de réservation, numéros de téléphone), avec quelques bits dynamiques (dates, coûts, etc.). Du côté des utilisateurs, la manière la plus simple de le faire serait de commencer avec un fichier PDF avec le contenu statique, puis d'utiliser python pour ajouter les parties dynamiques. Est-ce un processus simple? En faisant un peu de recherche, il me semble que je peux utiliser reportlab pour créer du contenu et pyPdf pour fusionner des PDF ensemble. Est-ce la meilleure approche? Ou y a-t-il une manière vraiment géniale que je n'ai pas encore rencontrée?Génération et fusion de fichiers PDF en Python

Merci!

Répondre

8

Du côté utilisateur, la façon la plus simple de le faire serait de commencer par un fichier PDF avec le contenu statique, puis en utilisant python pour ajouter simplement les parties dynamiques. Est-ce un processus simple?

Malheureusement pas. Il existe plusieurs outils qui permettent de produire des PDF à partir de rien (le plus souvent pour Python, ReportLab), mais ils ne chargent généralement pas les fichiers PDF existants. Vous devez inclure le code générateur pour tout texte, lignes, blocs, formes et images standard, au lieu que cela soit librement modifiable par l'utilisateur.

De l'autre côté, il y a pyPdf qui peut charger des fichiers PDF, assembler les pages et extraire certaines informations, mais ne peut pas vraiment ajouter de nouveau contenu. Vous pouvez fusionner des pages en une, mais vous devez tout d'abord créer la superposition d'informations supplémentaires en tant que page dans ReportLab.

+0

Merci, je vais aller avec ceci :-) Cela signifie que les utilisateurs peuvent facilement créer un PDF de toute façon qu'ils veulent en tant que base. – Humphrey

+2

Si vous utilisez un fichier SpooledTemporaryFile, vous pouvez créer des fichiers reportlab en mémoire, puis les ajouter à un fichier pdf maître avec pyPdf. –

1

Vous pouvez générer un document via, par exemple, TeX ou OpenOffice, ou tout ce qui vous donne les liaisons les plus confortables, puis imprimer le document avec une imprimante pdf. Ceci vous permet de ne pas avoir à déterminer où placer les champs avec précision ou de savoir quoi faire si votre contenu déborde de l'espace qui lui est alloué.

2

Regardez dans docutils et reSTructuredText. Vous pouvez rapidement écrire votre document PDF dans reST et ensuite compiler le PDF en utilisant rst2pdf.py

J'ai utilisé ceci, il crée de très beaux documents et le balisage est extensible! Plus tard, vous pourriez prendre le même code et le lancer dans rst2html pour créer un site web si c'est le cas!

Jetez un coup d'oeil ici:

Bonne chance