Seite 1 von 1

Formularfelder in PDF erstellen

Verfasst: Freitag 21. Juli 2017, 15:13
von Nobuddy
Hallo zusammen,

dieses Thema wurde schon zuletzt 2013 angesprochen.
Dort fand ich den Hinweis, dass das nur mit Reportlab Plus möglich wäre.

Dokumente, wie Rechnung, Lieferschein usw. erstelle ich mit Reportlab.
Nun möchte ich auch PDF-Dokumente mit Formularfelder erstellen.

Hat sich seither etwas in diesem Bereich getan, bzw. gibt es neue Möglichkeiten, Formularfelder in PDF zu erstellen?

Grüße Nobuddy

Re: Formularfelder in PDF erstellen

Verfasst: Freitag 21. Juli 2017, 15:47
von noisefloor
Hallo,

ReportLab kennt seit Version 3.4 (oder genau genommen 3.3.22?) einfacher Formular - siehe Sektion 4.7 in der akutellen Doku.

Selber genutzt habe ich das aber noch nicht.

Gruß, noisefloor

Re: Formularfelder in PDF erstellen

Verfasst: Freitag 21. Juli 2017, 16:33
von Nobuddy
Hallo noisefloor,

das wusste ich nicht, dachte das wäre Reportlab Plus vorbehalten.

Danke und Grüße
Nobuddy

Re: Formularfelder in PDF erstellen

Verfasst: Freitag 21. Juli 2017, 16:45
von Nobuddy
Das dürfte das auf Seite 61 (https://www.reportlab.com/docs/reportlab-userguide.pdf) sein.
The canvas.acroform.textfield method creates a textfield entry widget on the current page. The textfield may
be edited to change tha value of the widget
Mal schauen, ob ich da ein paar Code-Beispiele finde.

Re: Formularfelder in PDF erstellen

Verfasst: Samstag 22. Juli 2017, 10:02
von Nobuddy
Hallo zusammen,

habe kräftig nach canvas.acroform.textfiel gegoogelt.
Leider gibt es da wenig aussagekräftiges bzw. Beispiel-Code der auch funktioniert.

Vielleicht hat sich ja der Eine oder Andere von Euch, auch schon mit diesem Thema befasst und kann mir da vielleicht schon etwas mehr Info zu Verfügung stellen?

Grüße Nobuddy

Re: Formularfelder in PDF erstellen

Verfasst: Sonntag 23. Juli 2017, 09:37
von Nobuddy
Anhand der Zugriffe auf den Thread ist doch Interesse da, wie ich sehen kann.
Wo liegt das Problem bei Euch?
Bitte meldet Euch!

Grüße Nobuddy

Re: Formularfelder in PDF erstellen

Verfasst: Sonntag 23. Juli 2017, 13:26
von noisefloor
Hallo,

also das Beispiel aus der Doku funktioniert bei mir. Der folgende Code generiert ein PDF mit Formularfeld:

Code: Alles auswählen

from reportlab.pdfgen import canvas

c = canvas.Canvas('canvas_form.pdf')
c.drawString(10, 100, 'Some Text...')
c.acroForm.textfield(x=10, y= 200, value='Enter your name here...')
c.drawString(10, 300, 'Some more text')
c.showPage()
c.save()
WICHTIG: es heißt `canvas.acroForm.xxx`, also `acroForm` mit großem F. In der Doku steht es mit kleinem, das ist wohl falsch. Der Acrobat Reader (unter Windows) zeigt das PDF auch korrekt an und wann kann das Formularfeld ausfüllen.

Doof ist halt, dass das nur auf dem Canvas funktioniert und es kein Flowable dafür gibt. Werde wohl mal probieren, ein eigenes Flowable dafür zu erstellen.

Gruß, noisefloor

Re: Formularfelder in PDF erstellen

Verfasst: Sonntag 23. Juli 2017, 13:59
von Nobuddy
Hallo noisefloor,

Danke für Deine Unterstützung! :wink:
Werde wohl erst nach meinem Urlaub zum Testen kommen.

Grüße Nobuddy

Re: Formularfelder in PDF erstellen

Verfasst: Sonntag 23. Juli 2017, 14:43
von Nobuddy
Habe doch noch kurz Deinen Code ausprobiert.

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# For Python3.x

from reportlab.pdfgen import canvas
     
c = canvas.Canvas('canvas_form.pdf')
c.drawString(10, 100, 'Some Text...')
c.acroForm.textfield(x=10, y= 200, value='Enter your name here...')
c.drawString(10, 300, 'Some more text')
c.showPage()
c.save()
Leider kommt bei mir die Fehlermeldung:
Traceback (most recent call last):
File "neu.py", line 9, in <module>
c.acroForm.textfield(x=10, y= 200, value='Enter your name here...')
AttributeError: 'Canvas' object has no attribute 'acroForm'
Ich benutze Linux Kubuntu 16.04 und Python 3.4.
Du benutzt ja Windows, wie ich lese.
Kann das damit zusammenhängen?

Grüße Nobuddy

Re: Formularfelder in PDF erstellen

Verfasst: Sonntag 23. Juli 2017, 15:08
von noisefloor
Hallo,

nein - der Code wird unter Ubuntu 16.04 mit Python 3.5 ausgeführt und läuft. Nur das PDF zeigt Evince nicht richtig an, weil das Programm AFAIK keine Formularfelder in PDFs darstellen kann. Deshalb habe ich das PDF unter Windows mit dem Acrobat Reader angeschaut.

Welche Reportlab-Version benutzt du? Ich habe den Test mit 3.4.0 gemacht, dass ist die aktuellste. Wie gesagt, dass Reportlab Formularfelder kann ist AFAIK ziemlich neu.

Gruß, noisefloor

Re: Formularfelder in PDF erstellen

Verfasst: Sonntag 23. Juli 2017, 15:22
von Nobuddy
Meine Python-Version ist 3.4 und python-reportlab ist 3.0.
Hmm, Python 3.5 habe ich in 16.04 nicht.

Dann liegt das Problem wohl am Versionsunterschied.
Mal schauen, was ich da machen kann.

Danke und Grüße
Nobuddy

Re: Formularfelder in PDF erstellen

Verfasst: Sonntag 23. Juli 2017, 15:55
von noisefloor
Hallo,

an der Python-Version liegt das nicht, es ist wohl dein Reportlab Version. Installier' dir doch mal Reportlab 3.4 in ein virtual environment, dann kannst du da testen. Wenn du Reportlab im virtual environment via pip installierst, werden die beiden Abhängigkeiten direkt mit installiert, dass ist ziemlich einfach.

Gruß, noisefloor

Re: Formularfelder in PDF erstellen

Verfasst: Sonntag 23. Juli 2017, 16:15
von Nobuddy
Hallo noisefloor,

war mein Fehler habe die Kubuntu-Version von meinem Laptop mit meinem PC verwechselt.
Auf meinem Laptop habe ich 16.04 und somit auch bestimmt die Python-Version 3.5 und die Reportlab-Version 3.4.

Werde das auf meinem Laptop testen, da sollte es funktionieren.

Grüße Nobuddy