PowerShell - Felder in PDF auslesen und Dateiname damit erzeugen
Hallo zusammen,
ich stehe gerade vor folgender Herausforderung:
wir haben PDF Dateien, wo Felder befüllt werden bzw. wurden. Ich möchte nun ein Skript bauen, wo man die PDF auf das Skript ziehen kann, dieses dann 4 Daten/Felder aus der PDF ausliest und damit einen neuen Dateinamen für diese PDF erstellt und die Datei umbenennt.
Anbei ein Auszug aus der PDF:
Meine Frage ist nun, kann man direkt auf solche Felder einer PDF zugreifen, oder wie bekommen ich den Inhalt dieser 4 Felder am besten ausgelesen?
Ich bedanke mich Voraus.
MfG
Patrick
ich stehe gerade vor folgender Herausforderung:
wir haben PDF Dateien, wo Felder befüllt werden bzw. wurden. Ich möchte nun ein Skript bauen, wo man die PDF auf das Skript ziehen kann, dieses dann 4 Daten/Felder aus der PDF ausliest und damit einen neuen Dateinamen für diese PDF erstellt und die Datei umbenennt.
Anbei ein Auszug aus der PDF:
Meine Frage ist nun, kann man direkt auf solche Felder einer PDF zugreifen, oder wie bekommen ich den Inhalt dieser 4 Felder am besten ausgelesen?
Ich bedanke mich Voraus.
MfG
Patrick
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 547272
Url: https://administrator.de/forum/powershell-felder-in-pdf-auslesen-und-dateiname-damit-erzeugen-547272.html
Ausgedruckt am: 19.12.2024 um 16:12 Uhr
12 Kommentare
Neuester Kommentar
Suchfunktion hier im Forum liefert dir die Antwort
Powerhellskript zum Auslesen von Kundennummern aus diversen PDFs, mit anschließender Umbenennung der Datei
PDF Formular mit Daten aus Excel füttern?
Powerhellskript zum Auslesen von Kundennummern aus diversen PDFs, mit anschließender Umbenennung der Datei
PDF Formular mit Daten aus Excel füttern?
Servus Patrick,
wie @142970 oben schon im ersten Link verlinkt hat, ein damit leicht abgewandeltes Skript für die Verwendung mit Formularfeldern.
Anzupassen sind in den Variablen im Header der Pfad in dem die PDFs liegen, und die korrekten Feldnamen der Formularfelder in der Hashtable $fieldnames. Die Feldnamen der Formularfelder finden sich in den Eigenschaften der Felder (Kontextmenü).
Das Muster nachdem umbenannte wird lässt sich in Zeile 76 nach Gusto anpassen.
Die benötigte DLL zum Auslesen der PDFs wird bei nicht Vorhandensein in das Skriptverzeichnis nachgeladen, Schreibrechte sind dort also erforderlich sofern die DLL dort noch nicht hinterlegt ist.
Download des Skripts inkl. Demo-PDF und Kommentaren zu jeder Codezeile hier
Grüße Uwe
wie @142970 oben schon im ersten Link verlinkt hat, ein damit leicht abgewandeltes Skript für die Verwendung mit Formularfeldern.
Anzupassen sind in den Variablen im Header der Pfad in dem die PDFs liegen, und die korrekten Feldnamen der Formularfelder in der Hashtable $fieldnames. Die Feldnamen der Formularfelder finden sich in den Eigenschaften der Felder (Kontextmenü).
Das Muster nachdem umbenannte wird lässt sich in Zeile 76 nach Gusto anpassen.
Die benötigte DLL zum Auslesen der PDFs wird bei nicht Vorhandensein in das Skriptverzeichnis nachgeladen, Schreibrechte sind dort also erforderlich sofern die DLL dort noch nicht hinterlegt ist.
Download des Skripts inkl. Demo-PDF und Kommentaren zu jeder Codezeile hier
pdf_rename_with_form_fields_547272.zip
Grüße Uwe
Hallo Uwe,
ich habe gerade versucht das auszuprobieren, bekomme aber die Feldnamen nicht aus einem PDF (Kontextmenü funktioniert nicht). Soweit ich das erkennen kann scheint das Problem zu sein das das PDF nicht mit Acrobat sondern Lifecycle erstellt worden ist. Hab da auf dei schnelle nichts brauchbares im Web gefunden. Hast du evtl. auch ein kleines Script um alle enthaltenen Felder aus einem PDF auszulesen oder kennst du noch eine andere Möglichkeit?
Beste Grüße
ich habe gerade versucht das auszuprobieren, bekomme aber die Feldnamen nicht aus einem PDF (Kontextmenü funktioniert nicht). Soweit ich das erkennen kann scheint das Problem zu sein das das PDF nicht mit Acrobat sondern Lifecycle erstellt worden ist. Hab da auf dei schnelle nichts brauchbares im Web gefunden. Hast du evtl. auch ein kleines Script um alle enthaltenen Felder aus einem PDF auszulesen oder kennst du noch eine andere Möglichkeit?
Beste Grüße
Servus,
also damit du die Feldnamen angezeigt bekommst musst du z.B. in Acrobat das spezielle Object Select Tool nutzen, womit du Formularfelder selektieren und bearbeiten kannst, oder du bearbeitest das PDF als Formular in Acrobat dann siehst du die Namen ebenfalls, oder du lässt dir den Object-Tree des PDFs einblenden, oder du lässt dir im Skript in der Schleife nach Zeile 65 mit
die verfügbaren Felder des PDFs auf der Konsole ausgeben.
In Lifecycle kannst du die Objekt-Namen im Normalfall ja auch direkt übernehmen.
Gibt also genug Möglichkeiten 😉.
Grüße Uwe
also damit du die Feldnamen angezeigt bekommst musst du z.B. in Acrobat das spezielle Object Select Tool nutzen, womit du Formularfelder selektieren und bearbeiten kannst, oder du bearbeitest das PDF als Formular in Acrobat dann siehst du die Namen ebenfalls, oder du lässt dir den Object-Tree des PDFs einblenden, oder du lässt dir im Skript in der Schleife nach Zeile 65 mit
$reader.AcroFields
In Lifecycle kannst du die Objekt-Namen im Normalfall ja auch direkt übernehmen.
Gibt also genug Möglichkeiten 😉.
Grüße Uwe
Servus Uwe,
danke für den Tipp. Ich selbst habe leider kein Lifecycle, wenn ich das PDF mit Acroat bearbeiten will kommt die Meldung "Dieses Formular kann in Acrobat nicht bearbeitet werden, verwenden Sie Lifecycle". Das Object Select Tool steht leider auch nicht zur Verfügung.
https://answers.acrobatusers.com/How-activate-Select-Object-tool-Acrobat ...
Ich geh mal was Essen, dann versuch ich das Script so anzupassen wie du sagst.
Beste Grüße
danke für den Tipp. Ich selbst habe leider kein Lifecycle, wenn ich das PDF mit Acroat bearbeiten will kommt die Meldung "Dieses Formular kann in Acrobat nicht bearbeitet werden, verwenden Sie Lifecycle". Das Object Select Tool steht leider auch nicht zur Verfügung.
https://answers.acrobatusers.com/How-activate-Select-Object-tool-Acrobat ...
Ich geh mal was Essen, dann versuch ich das Script so anzupassen wie du sagst.
Beste Grüße
Das Object Select Tool steht leider auch nicht zur Verfügung.
Wenn du Acrobat Pro hast steht das Tool immer zur Verfügung, ist nur meist nicht direkt in der Symbolleiste verlinkt. Genauso wie der Object-Tree den man sich links in der Baumansicht anzeigen lassen kann, wo die Namen ebenfalls stehen.Das geht hier auch testweise mit einem vom Lifecycle Designer erstellten PDF einwandfrei.
Dann muss ich wohl mal wieder den Stift rausholen und das aufmalen
Edit: Beachte aber das bei LifeCycle Forms die Daten nicht wie oben im Skript aufgeführt ausgelesen werden da die Daten in LifeCycle Forms in XML (xfa Format) abgelegt werden.
Solche Felder müssen je evt. mit
abgefragt werden.
Edit: Beachte aber das bei LifeCycle Forms die Daten nicht wie oben im Skript aufgeführt ausgelesen werden da die Daten in LifeCycle Forms in XML (xfa Format) abgelegt werden.
Solche Felder müssen je evt. mit
$reader.AcroFields.Xfa.FindDatasetsNode('MeinTextfeld').innerText
Danke dir das hat wirklich geholfen, hab die Felder auslesen können und das Script ist ohne Probleme durchgelaufen.
Hab mir derweilen mal angeschaut was es mit den Lifecycledokumenten auf sich hat. Lifecycle erstellt wohl dynamische PDF Formulare mit einem XFA header im Gegensatz zu Acrobat was statische PDFs erstellt.
Vielleicht auch für jemanden interessant.
Mit PDFTK kann man die XFA Informationen entfernen und dann lässt sich das PDF auch mit Acrobat bearbeiten. Hat problemlos funktioniert ohne das Formate, Felder oder Sonstiges beschädigt worden wären.
https://de.switch-case.com/70877443
Hab mir derweilen mal angeschaut was es mit den Lifecycledokumenten auf sich hat. Lifecycle erstellt wohl dynamische PDF Formulare mit einem XFA header im Gegensatz zu Acrobat was statische PDFs erstellt.
Vielleicht auch für jemanden interessant.
Mit PDFTK kann man die XFA Informationen entfernen und dann lässt sich das PDF auch mit Acrobat bearbeiten. Hat problemlos funktioniert ohne das Formate, Felder oder Sonstiges beschädigt worden wären.
pdftk in.pdf output out.pdf drop_xfa
https://de.switch-case.com/70877443
Hallo,
da ich auf der Suche nach einer speziellen Lösung bin hoffe ich, bei der Administrator-Schwarmintelligenz fündig zu werden und hab mich mal registriert.
Ich bin auf der Suche nach einer Lösung mit ähnlicher Aufgabenstellung wie hier beschrieben. Textdaten aus PDF-Formularfeldern sollen exportiert werden.
Lediglich stelle ich mir ein mehrseitiges PDF vor (jede Seite eine Produktbeschreibung) und möglichst sollten nicht nur Texte sondern ggf auch Bilder (Bildverweise/Dateiname) mit berücksichtigt oder sogar mit angezeigt werden, wenn man sie auf ein Feld auf der PDF-Seite zieht.
Letztendlich dient die PDF der Datenerfassung. Die gesammelten Daten sollen dann in einem Datenbankformat exportiert werden.
Kann man PDF-Dateien so vorbereiten bzw. benutzen?
Ich würde mich auch über eine Empfehlung freuen, wer so etwas erledigen kann.
Danke schon einmal.
Peter
da ich auf der Suche nach einer speziellen Lösung bin hoffe ich, bei der Administrator-Schwarmintelligenz fündig zu werden und hab mich mal registriert.
Ich bin auf der Suche nach einer Lösung mit ähnlicher Aufgabenstellung wie hier beschrieben. Textdaten aus PDF-Formularfeldern sollen exportiert werden.
Lediglich stelle ich mir ein mehrseitiges PDF vor (jede Seite eine Produktbeschreibung) und möglichst sollten nicht nur Texte sondern ggf auch Bilder (Bildverweise/Dateiname) mit berücksichtigt oder sogar mit angezeigt werden, wenn man sie auf ein Feld auf der PDF-Seite zieht.
Letztendlich dient die PDF der Datenerfassung. Die gesammelten Daten sollen dann in einem Datenbankformat exportiert werden.
Kann man PDF-Dateien so vorbereiten bzw. benutzen?
Ich würde mich auch über eine Empfehlung freuen, wer so etwas erledigen kann.
Danke schon einmal.
Peter
Hallo Peter, willkommen auf Administrator.de!
Da das doch ein etwas anderes Thema ist bitte ich dich einen neuen Thread dafür auf zu machen, merci.
Um deine Frage zum Thema dennoch kurz zu beantworten:
Alternativ ist natürlich immer die Variante einer "echten" Anwendung (c#/java/.net/etc.) möglich.
Grüße Uwe
Da das doch ein etwas anderes Thema ist bitte ich dich einen neuen Thread dafür auf zu machen, merci.
Um deine Frage zum Thema dennoch kurz zu beantworten:
Kann man PDF-Dateien so vorbereiten bzw. benutzen?
Kann man machen, ist aber sehr unüblich das so zu zweck zu entfremden. Außerdem sind die Sicherheitsmaßnahmen von PDF-Dateien auf unterschiedlichen Platformen hier sehr restriktiv und der Funktionsumfang so unterschiedlich, dass der Aufwand in keinem Verhältnis zum Nutzen steht. Sowas setzt man heutzutage eher als Webservice unabhängig von der Plattform um so das auch User mit einem einfachen Browser so etwas nutzen können. So kann man die Daten auch gleich in einer richtigen Datenbank hinterlegen.Alternativ ist natürlich immer die Variante einer "echten" Anwendung (c#/java/.net/etc.) möglich.
Grüße Uwe