PDF-Anhänge extrahieren
Der Service Task „PDF-Anhänge extrahieren“ liest die in einem PDF eingebetteten Dateien aus. Der wichtigste Fall ist die E-Rechnung im ZUGFeRD- oder Factur-X-Format: Das PDF enthält eine factur-x.xml oder zugferd-invoice.xml mit allen Rechnungsdaten. Der Service liefert für jeden Anhang den Namen und für XML-Anhänge zusätzlich den Inhalt als Text, der im nächsten Schritt mit XML-Datei in JSON umwandeln auswertbar wird.
Technischer Name prio_pdfExtractAttachments · Kategorie im Dialog „Service-Task auswählen“: Dokumente & PDF
Wann wird dieser Service verwendet?
- Eingangsrechnungen auslesen: Die Musterfirma GmbH erhält Rechnungen ihrer Hardware-Lieferanten als ZUGFeRD-PDF und übernimmt Rechnungsnummer, Betrag und Positionen aus dem XML, ohne das PDF per KI zu lesen.
- E-Rechnung erkennen: Ein Gateway prüft, ob ein eingegangenes PDF überhaupt ein XML enthält, und wählt danach den Weg „E-Rechnung“ oder „PDF analysieren“.
- Anhangsliste dokumentieren: Die Namen aller eingebetteten Dateien werden am Datensatz gespeichert.
Eingabe
| Feld | Typ | Pflicht | Bedeutung |
|---|---|---|---|
pdf |
Datei-Objekt | ja | Das PDF aus dem Pantarey-Speicher als {referenceId, filename, contentType} |
{ "pdf": eingangsrechnung.pdf }
Ausgabe
Ein Array mit einem Eintrag je eingebetteter Datei:
[
{ "name": "factur-x.xml", "data": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><rsm:CrossIndustryInvoice …" },
{ "name": "Lieferschein.pdf" }
]
name: Dateiname des Anhangs.data: Der Inhalt als Text, nur bei Namen, die auf.xml(klein geschrieben) enden. Alle anderen Anhänge liefern nur den Namen; ihr Inhalt wird weder zurückgegeben noch als Datei gespeichert.- Ein PDF ohne Anhänge liefert
[].
Das Ergebnis landet unter dem Ergebnispfad, z. B. anhaenge. Der Zugriff auf das XML lautet dann anhaenge[name='factur-x.xml'].data.
Fehler und Verhalten
- Fehlende Eingabe wirft
No PDF provided for Attachment extraction; ein Wert, der kein Datei-Objekt ist, wirft beim Laden (expected a reference object like { referenceId, filename, contentType }). - Nicht lesbare PDFs (beschädigt, verschlüsselt, fehlerhafte Anhangsstruktur) werfen ebenfalls.
- Jeder Fehler führt über ein Fehler-Randereignis weiter; ohne Randereignis endet der Vorgang im Fehler mit Wiederaufsetzpunkt und Fehler-Mail an den Prozessverantwortlichen. Der Service liefert nie
{status, message}. - Keine Anhänge sind kein Fehler: Das Ergebnis ist
[], der Prozess läuft weiter. - Zeitgrenze 900 Sekunden. Es wird nichts gespeichert; das Original bleibt unverändert.
- Im Dry Run zeigt der Schritt eine Beispielausgabe aus dem Katalog, die vom echten Ergebnis abweichen kann.
Beispiel
Eine Lieferantenrechnung geht bei der Musterfirma GmbH per E-Mail ein; das PDF liegt unter eingangsrechnung.pdf.
- PDF-Anhänge extrahieren mit
{ "pdf": eingangsrechnung.pdf }, Ergebnispfadanhaenge. - Gateway:
$exists(anhaenge[name='factur-x.xml' or name='zugferd-invoice.xml'])→ Weg „E-Rechnung“, sonst Weg „PDF analysieren“. - XML-Datei in JSON umwandeln mit
{ "xml": anhaenge[name='factur-x.xml' or name='zugferd-invoice.xml'].data }, Ergebnispfadrechnung_xml. - Nächster Schritt: Ein Datenbank-Schritt legt die Eingangsrechnung mit Nummer, Datum und Bruttobetrag aus
rechnung_xmlan.
Häufige Fragen
Der Anhang heißt RECHNUNG.XML, aber data fehlt.
Der Inhalt wird nur für Namen geliefert, die klein geschrieben auf .xml enden. Großbuchstaben in der Endung werden nicht erkannt; der Anhang erscheint nur mit Namen.
Kann ein eingebettetes PDF oder eine CSV weiterverwendet werden?
Nein. Für andere Formate als XML liefert der Service nur den Namen. Der Inhalt wird nicht zurückgegeben und nicht als Datei gespeichert.
Wie lässt sich prüfen, ob ein PDF eine E-Rechnung ist?
Das Ergebnis auf einen Eintrag mit name factur-x.xml oder zugferd-invoice.xml prüfen, wie im Beispiel. Ein leeres Array bedeutet: keine eingebetteten Dateien.
Nächster Schritt
XML-Datei in JSON umwandeln: das ausgelesene XML in ein Objekt wandeln, auf das JSONata zugreifen kann.