PDF-Datei erzeugen?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
heiliga horsd

Hallo,

ich muss für einen Verein ein kleines Problem lösen. Es geht darum, dass wir automatisiert schnell Urkunden erstellen wollen und diese dann als pdf-Datei abspeichern.

Die Urkunden sollen so aussehen:

Oben Rechts: kleines Logo
Oberes Drittel Mittig: Bisschen schnörkelige Schrift, wird evtl. als Bilddatei bereitgestellt
Mitte: Großformatiges Farbfoto (in jeder Urkunde ein anderes)
Unter dem Foto: Spezielle Daten in Tabellen organisiert (bspw "Baujahr: 1976")

Die Rohdaten würden dann über eine normale Textdatei kommen und die Bilder eben aus den entsprechenden Bilddateien.

Kann man soetwas mit Python realisieren? Oder noch besser: Gibt es Programme, die eine solche Stapelverarbeitung ermöglichen?



Lg heiliga horsd
problembär

Hallo,

also für Python gibt's da ReportLab.

Ich denke, daß aber auch LaTeX in Verbindung mit Python dafür sehr gut geeignet wäre, man kann mit dem Befehl "pdflatex" aus LaTeX-Quellcode (= reiner Text) direkt pdfs erzeugen. LaTeX braucht aber natürlich eine gewisse Einarbeitungszeit.

Viele Grüße
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo,

ich würde wohl pdflatex verwenden. Je nach Vorkenntnissen dauert die Einarbeitung in TeX natürlich ein wenig.

Eine schnelle Alternative könnte die Erzeugung eines Bildes mittels PIL sein, in welches du die Daten dann hinein schreibst. Dann bist du zwar nicht ganz so flexibel, musst dich aber auch nicht mit Layouts von TeX rumschlagen.

Die Forensuche bringt vielleicht auch noch etwas zu Tag. Ich bin der Meinung, dass es schon einen Thread zu diesem Thema gegeben hat.

Sebastian
Das Leben ist wie ein Tennisball.
heiliga horsd

OK, das mit LaTeX hört sich super an, da ich noch viel Zeit habe, werde ich mir das sicherlich anschauen!

Lg heiliga horsd
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

ReportLab ist auch nicht schwer. Bzw. es ist sogar relativ simpel, wenn man sich ein bisschen damit beschäftigt.

Wenn du andere Schriften als die drei PDF Standardschriften haben willst, dann musst du bei ReportLab die Fonts von Hand importieren. Geht ohne weiteres WENN du weißt, wo du die Font-Dateien herbekommst.

Gruß, noisefloor
funkheld
User
Beiträge: 258
Registriert: Sonntag 31. Oktober 2010, 09:26

lade dir pdf24 runter , ist freeware.

gruss
heiliga horsd

Also ich hab jetzt mal mit LaTeX angefangen, ist zwar anfangs noch sehr ungewohnt, aber ich denke damit kann man gute Ergebnisse erzielen. Das erzeugen von pdfs klappt auch super. Ich denke ich werde bei LaTeX bleiben, da ich beides momentan als ähnlich einschätze und bei LaTeX bereits angefangen habe.

@funkheld: Ich hab mir die Website angesehen, aber wofür sollte das Programm in meinem Fall nützlich sein?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Ansonsten halt OpenOffice.org/LibreOffice mit sowas wie Serienbrieffunktion. Gerade wenn man Sachen "layouten" will, dann ist LaTeX etwas unhandlich.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Leonidas hat geschrieben:Ansonsten halt OpenOffice.org/LibreOffice mit sowas wie Serienbrieffunktion. Gerade wenn man Sachen "layouten" will, dann ist LaTeX etwas unhandlich.
Ja, dazu gibt es auch eine Python-Schnittstelle, hab dazu aber nirgends eine vernünftige Doku gefunden. Musste Code-Schnippsel im Netz suchen um einen doc->pdf Konverter zu schreiben.
„Lieber von den Richtigen kritisiert als von den Falschen gelobt werden.“
Gerhard Kocher

http://ms4py.org/
BlackJack

@ms4py: Die "Python"-Schnittstelle ist die UNO-Schnittstelle, die Sun für Java und C++ entworfen hat. Das ist alles super umständlich und "javaesque". Da würde ich eher eines der Module verwenden, die auf dem Dateiformat operieren und in OOo/LibreOffice Platzhalter einsetzen, die dann per Programm in den Dateien ausgetauscht werden.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Ich würde noch mal Scribus reinwerfen. Damit habe ich auch schon Urkunden erstellt, wenn auch nicht automatisiert (dafür lohnt sich die Anzahl bei uns nicht :-D ). Aber das ganze ist per Python scriptbar (wenn auch mit teils häßlicher API) und das funzt auch ganz gut. Habe damit mal ein Quartett-Spiel automatisch erstellt.

Evtl. ist die API mittlerweile auch besser; daran wurde zumindest def. gearbeitet.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
heiliga horsd

Hi,

entschuldigung wenn ich mich so spät erst melde. Da es mit der Zeit nicht eilt, kann ich mir das in Scribus ja mal anschauen, vielleicht ist es das, was ich suche =)

Lg HH
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Für PyRM bin ich auch auf der Suche nach einer Tremplates->PDF Lösung...

Vielleicht ist pyfpdf brauchbar, siehe: https://code.google.com/p/pyfpdf/wiki/Templates

Oder aber der HTML->PDF Konverter: http://pypi.python.org/pypi/xhtml2pdf/ (da ich z.Z. eh HTML erzeuge...)

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Passt zwar nicht zum letzten Beitrag, aber zum Thread an sich:
Auf der Suche nach einer Lösung zur Erzeugung von PDF-Dokumenten mit Python 3.2 (d.h. kein PIL, kein ReportLab verfügbar), habe ich mich mit ImageMagick beholfen, das ich mittels subprocess entsprechend gefüttert habe. Damit kann man ganz ordentliche Ergebnisse erzielen.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Da der Thread schon etwas aelter ist: Numerix koenntest du das naeher ausfuehren? Aus was hast du PDFs gebaut und warum schied z.B. LaTeX aus?
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

cofi hat geschrieben:Da der Thread schon etwas aelter ist: Numerix koenntest du das naeher ausfuehren? Aus was hast du PDFs gebaut und warum schied z.B. LaTeX aus?
LaTeX habe ich nicht im Blick gehabt, da ich damit bislang nichts zu tun hatte. Ob das im konkreten Fall nützlich wäre bzw. sich die Beschäftigung damit lohnt, weiß ich nicht.

Ziel war es, anhand von einigen Benutzereingaben aus Eingabefeldern ein Formular als PDF zu erzeugen, in dem diese Benutzereingaben eingearbeitet sind. Da ich mir offen halten wollte, ob ich die entsprechende Anwendung webbasiert oder als lokale GUI-Variante laufen lasse, habe ich nach etwas gesucht, was sowohl lokal mit Python 3.2 und Tkinter-GUI einsetzbar ist, als auch webbasiert unter den konkreten Bedingungen des Webhosters.
Das entsprechende Webhosting-Paket beinhaltet Python (derzeit 2.7), allerdings weder PIL noch ReportLab und keine Rechte zur Installation weiterer Module. Allerdings ist ImageMagick verfügbar. Bei näherer Beschäftigung mit ImageMagick habe ich dann dazu gelernt, dass man damit nicht nur schon vorhandene Grafikdateien modifizieren kann, sondern auch ein quasi ein leeres Canvas erstellen und darauf schreiben und zeichnen kann, und zwar mit pixelgenauer Positionierung. Das Produkt lässt sich dann als PDF abspeichern oder in einem der vielen unterstützten Grafikformate.

Weitere Projektideen, die ich habe, könnten auch die Erzeugung von PDFs beinhalten, die außer Text einfache geometrische Figuren beinhalten (z.B. ein komplett beschriftetes Dreieck aus den Angaben der Seitenlängen, und zwar im exakten Maßstab 1:1). ImageMagick lässt mir da die Freiheit, das Ergebnis mal als PDF zu produzieren oder auch als Grafik - der Zeichenprozess ist exakt der gleiche. Eine solche Grafik könnte ich dann z.B. auch bei einer webbasierten Anwendung on the fly erzeugen und direkt in ein dynamisch erzeugtes HTML-Dokument einbinden.
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

ah, interessant. Damit kann man ImageMagick ähnlich Einsetzten wie die "Canvas" aus Reportlab, richtig?

Gruß, noisefloor
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

noisefloor hat geschrieben:Damit kann man ImageMagick ähnlich Einsetzten wie die "Canvas" aus Reportlab, richtig?
Das kann ich nicht beantworten, weil ich mich mit ReportLab nur kurz beschäftigt und diesen Weg aus den genannten Gründen nicht weiter verfolgt habe. Du kannst mit ImageMagick ein Canvas erzeugen und es vergleichbar mit einem Tkinter-Canvas mit einfachen geometrischen Formen (Kreise, Linien, Polygonzüge, Punkte u.ä.) sowie Text pixelgenau über ein Koordinatensystem beschreiben. Da man die Auflösung festlegen kann, lassen sich damit passable Druckergebnisse erzielen.
BlackJack

@numerix: Aber es werden auch im PDF Pixelgraphiken erzeugt, oder!? Das wäre ja eher unschön.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Ja, ist korrekt. Und ja, ist eher unschön. Das werde ich aber wohl in Kauf nehmen (müssen). Angesichts der vorteilhaften Optionen, die diese Variante für meine Einsatzzwecke hat, ist das verschmerzlich, zumal die Druckqualität für meine Bedürfnisse absolut okay ist. Hier mal ein Beispieldokument.
Antworten