Get-PdfAttachment #
ÜBERSICHT #
Liest alle in eine PDF eingebetteten Dateien strukturell aus: E-Rechnungs-XML, Begleitdokumente, Anlagen.
SYNTAX #
Get-PdfAttachment [-Path] <string> [[-Bytes] <byte[]>]
BESCHREIBUNG #
Folgt der Verweisliste der PDF statt im Rohtext zu suchen (CN 27.09.2026: der bisherige Weg fand die Einsprungstelle per Regex und scheiterte bei fremden PDFs). Gelesen werden der Katalog aus dem Trailer, der Namensbaum /Names /EmbeddedFiles mit allen Ebenen (/Names und /Kids) und das Array /AF des Katalogs (PDF/A-3, ZUGFeRD, Factur-X), jede Dateispezifikation mit /UF oder /F, /Desc und /AFRelationship, der eingebettete Stream mit /Subtype (MIME) und /Params. Die Objekte kommen über den Xref-Index (klassische Tabellen, XRef-Streams, Object Streams, inkrementelle Updates); stimmt ein Offset nicht, wird im Text gesucht.
Je Anhang ein PSCustomObject: Name, Description, MimeType, Relationship (Data, Source, Alternative, Supplement, Unspecified oder leer), Size, Sha256, Data (byte[]) und Origin (EmbeddedFiles, AF oder beides). Keine Anhänge: leere Liste, kein Fehler. Eine Datei, die gar keine PDF ist: ArgumentException.
PARAMETER #
-Path #
Type: string
Pfad zur PDF.
-Bytes #
Type: byte[]
Die PDF als Bytes (statt Path).
BEISPIELE #
Get-PdfAttachment -Path .\rechnung.pdf | Select-Object Name, MimeType, Relationship, Size
$xml = Get-PdfAttachment -Bytes $bytes | Where-Object { $_.Name -match '\.xml$' } | Select-Object -First 1