What this finds that other extractors miss
A PDF can carry an attachment in three completely unrelated places, and most extractors only look in the first one.
- The
/Names /EmbeddedFilesname tree. This is a balanced tree, not a list. As soon as a document has more than a handful of attachments the producer splits it into/Kidsnodes, and a tool that reads only the root array reports zero files for a PDF that clearly has several. /FileAttachmentannotations. The paperclip you see on the page. The file hangs off the annotation, and it is often not registered in the name tree at all./AFassociated files. Added in PDF 2.0, and the reason this matters commercially: ZUGFeRD, Factur-X, XRechnung and Order-X e-invoices carry their machine-readable XML this way. If your accounting system rejects an invoice, this is the payload you need to look at.
The same stream is often reachable from two of those routes, so files are matched by object reference and merged, with every source shown.
What you get per file
Name, description, declared MIME type, declared and actual byte size, creation and modification dates, the MD5 checksum when the producer wrote one, the /AFRelationship role, and which page the attachment sits on.
The type check
The declared type is whatever the PDF claims. This tool also reads the first bytes of the file and reports what they actually are. An attachment named notes.txt that begins with PK is a ZIP archive; one beginning with MZ is a Windows executable. Both are flagged, and both are worth knowing about before you open anything.
Preview and download
Text, CSV, JSON and XML are shown inline; PNG, JPEG, GIF, WebP and BMP are rendered as images. Everything else is download-only. Nothing is executed, and nothing is ever fetched over the network.
Download a single attachment, or take all of them at once as a ZIP.
Privacy
The PDF is parsed in your browser with JavaScript. It is never uploaded, so confidential documents and attachments stay on your machine.
Tiny Online Tools







