Extract PDF attachments
Pull embedded files back out of a PDF. Runs entirely on your device.
Runs on your device. The file is never uploaded.
Extract PDF attachments lists the embedded files in a document with pdf.js, then fetches each one's bytes through getAttachmentContent and hands it over as its own download. Names come straight from the document, or from the entry's internal identifier when none was recorded. A document carrying no embedded files stops with this PDF has no attachments.
Questions
What counts as an attachment?
A file embedded inside the PDF as a file attachment, which is a different thing from an image drawn on a page. Invoices with an XML payload, PDF portfolios and documents with a spreadsheet clipped to them all carry these. pdf.js lists them, and this pulls each one back out as a separate download.
Why does it say "this PDF has no attachments"?
Because pdf.js reported none. Most PDFs have none, so this is the usual answer rather than a sign of a problem. If you were expecting an image that appears on a page, that is not an attachment: use Extract PDF images instead, which reads the embedded picture objects.
What are the extracted files named?
Whatever name the PDF stored for each attachment. If an attachment has no filename recorded, its internal identifier is used instead. The names come from the document itself, so two attachments recorded under the same name will both appear under that name in the results list.
Are the attachments modified in any way?
No. The bytes are read from the document and handed to you as they are, so an attached ZIP is still that exact ZIP and an attached XML is byte for byte the one that was embedded. Nothing is converted, renamed on your behalf or scanned.
Does the PDF change?
No. This only reads. Your PDF still contains its attachments afterwards and no modified copy is produced, so there is no PDF in the results, only the extracted files. One PDF at a time; run it again for the next one.
Does it upload anything?
No. pdf.js runs in a Web Worker in this tab, reads the attachment list, then fetches each attachment's bytes from the file in memory. Nothing is transmitted. That matters here because an attachment is often the sensitive part of a document rather than the pages themselves.