Import von ausgefüllten Feldern eines PDF Formulars

Ich möchte die ausgefüllten Formularfelder eines PDF Formulars in einen Datensatz in einer Tabelle importieren. Ist es möglich, dies über ein Script zu erreichen?

Hallo Hans und willkommen!

Meinst du hier das PDF-Objekt, dass du in einen Bericht hinzufügst - also dessen Formularfelder? Hierbei sind die Formularfelder immer “read-only” soweit ich das weiß, da hier das PDF-Dokument nur als Grafik (EMF) gerendert wird.

Was möglich wäre ist, dass wenn der Bericht mit den Formularfeldern auf die Vorschau ausgegeben wird und dort durch den Anwender Eingaben gemacht wurden, dass man beim Beenden der Vorschau die Eingaben in ein XML abspeichern lassen kann, dass dann entsprechend weiterverarbeiten werden könnte - schau mal hier: Automatische Formularspeicherung

Aber wenn der Bericht bereits in das PDF-Format exportiert wurden mit den Formulareingaben, dann wird hier List & Label nichts mehr machen können. Dann muss man schauen wie die Eingaben über den verwendeten PDF-Reader im System abgefragt/exportiert werden könnten - List & Label ist da nicht mehr beteiligt nach dem PDF-Export.

Hallo @Hans_von_Kleist-Retzow,

herzlich Willkommen im LL-Forum!

In der Tat ist es so, wie von @Oliver_Hambrecht erläutert. Sobald das PDF-Dokument exportiert ist, ist List & Label-seitig nichts mehr möglich. Jede weitere Verarbeitung obliegt dann dem Anwender.

Wir denken jedoch, dass die Anforderung grundsätzlich umsetzbar ist. Sie könnten ein Script schreiben, das die ausgefüllten Formularfelder eines PDF ausliest und anschließend die Daten in eine Tabelle importiert. Spontan haben wir ChatGPT mit der Anforderung gefüttert und folgendes, zugegebenermaßen erfolgsversprechendes, Resultat erhalten:

Vorgehensweise

  1. PDF-Daten extrahieren:
    Verwenden Sie eine Programmiersprache wie Python, die Bibliotheken wie PyPDF2, pdfrw oder pdfminer.six bereitstellt, um auf die Formularfelder (AcroForm) zuzugreifen und deren Inhalte auszulesen. Alternativ können Sie auch JavaScript in Adobe Acrobat verwenden, um die Daten direkt aus dem Formular zu extrahieren.
  2. Daten aufbereiten:
    Sobald Sie die Formularfelder ausgelesen haben, können Sie die Daten in ein Format wie CSV oder JSON umwandeln, das sich gut in eine Datenbank oder Tabelle importieren lässt.
  3. Import in eine Tabelle:
    Anschließend lässt sich das vorbereitete Datenformat mithilfe eines Scripts oder Tools (z. B. SQL-Skripte, Python-Skripte oder ETL-Tools) in Ihre Datenbank oder Tabelle importieren.

Beispiel in Python

Hier ein vereinfachtes Beispiel, wie Sie mit Python und PyPDF2 vorgehen könnten:

python
Copy
import PyPDF2
import csv

# PDF-Datei öffnen
with open('formular.pdf', 'rb') as file:
    reader = PyPDF2.PdfFileReader(file)
    # Formularfelder abrufen
    fields = reader.getFields()

# Daten in CSV speichern
with open('daten.csv', 'w', newline='') as csvfile:
    writer = csv.writer(csvfile)
    # Kopfzeile schreiben
    writer.writerow(fields.keys())
    # Werte der Formularfelder schreiben
    writer.writerow([field.get('/V') for field in fields.values()])

Dieses Script liest die Formularfelder aus und speichert sie in einer CSV-Datei, die dann in eine Tabelle importiert werden kann.

Was halten Sie davon? Für eine grobe Richtungsvorgabe vermutlich ganz brauchbar. Halten Sie uns und die Community gerne auf dem Laufenden.

Sonnige Grüße vom Bodensee
Chris

Wichtig: Der oben aufgeführte Code stammt nicht von combit und wurde weder auf Funktion noch auf Korrektheit überprüft.

Hallo @crauchfuss, das hört sich schon sehr vielversprechend an. Es geht darum, dass ich von einem Anwender ein PDF Formular ausfüllen lasse mit z.B. Vorname, Nachname, Strasse, PLZ, Ort, Geburtsdatum, … Diese Werte möchte ich in Combit einlesen und in einer Tabelle abspeichern. Das PDF Formular wurde von mir erstellt (z.B. mit LibreOffice) und dem Anwender zur Verfügung gestellt. Ich werde mir die Bibliothek PyPDF2 einmal anschauen. Das könnte mein Problem lösen.