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
Formularfelder in PDF erstellen
- noisefloor
- User
- Beiträge: 3856
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
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
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
Das dürfte das auf Seite 61 (https://www.reportlab.com/docs/reportlab-userguide.pdf) sein.
Mal schauen, ob ich da ein paar Code-Beispiele finde.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
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
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
- noisefloor
- User
- Beiträge: 3856
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
also das Beispiel aus der Doku funktioniert bei mir. Der folgende Code generiert ein PDF mit Formularfeld:
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
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()
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
Habe doch noch kurz Deinen Code ausprobiert.
Leider kommt bei mir die Fehlermeldung:
Du benutzt ja Windows, wie ich lese.
Kann das damit zusammenhängen?
Grüße Nobuddy
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()
Ich benutze Linux Kubuntu 16.04 und Python 3.4.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'
Du benutzt ja Windows, wie ich lese.
Kann das damit zusammenhängen?
Grüße Nobuddy
- noisefloor
- User
- Beiträge: 3856
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
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
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
- noisefloor
- User
- Beiträge: 3856
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
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
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
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
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