Attachments
Foxit PDF SDK for Android provides embed, extract, enumerate, and delete APIs for document attachments (Embedded Files) through the Core SDK. Document attachments let you package arbitrary files into a PDF, similar to email attachments.
Document attachments vs file attachment annotations
This guide covers document-level attachments (Embedded Files) stored in the document name tree. File attachment annotations are page-level annotation types and are covered separately in the annotation documentation.
Built-in attachments panel in UI Extensions
If you use the full reader (UI Extensions), the attachments panel is built in; users can view, add, and export attachments without extra code.
Core Classes
| Class | Description |
|---|---|
Attachments | Document attachment collection; add, remove, query, and update embedded files; convenience methods addFromFilePath() and extractEmbeddedFileTo() |
FileSpec | File specification describing embedded file properties (name, size, timestamps, etc.); embed/export via path or stream |
PDFNameTree | PDF name tree; Attachments is built on the e_EmbeddedFiles name tree |
Example: Embed Files in a PDF
java
import com.foxit.sdk.pdf.PDFDoc;
import com.foxit.sdk.pdf.Attachments;
import com.foxit.sdk.pdf.FileSpec;
import com.foxit.sdk.pdf.objects.PDFNameTree;
PDFDoc doc = new PDFDoc("path/to/Sample.pdf");
doc.load(null);
PDFNameTree nameTree = new PDFNameTree(doc, PDFNameTree.e_EmbeddedFiles);
Attachments attachments = new Attachments(doc, nameTree);
// Method 1: embed via FileSpec
FileSpec fileSpec = new FileSpec(doc);
fileSpec.setFileName("report.xlsx");
fileSpec.embed("/sdcard/report.xlsx");
attachments.addEmbeddedFile("report.xlsx", fileSpec);
// Method 2: embed directly from file path (convenience)
attachments.addFromFilePath("image.png", "/sdcard/image.png");
doc.saveAs("path/to/output.pdf", PDFDoc.e_SaveFlagNormal);Example: List and Export All Attachments
java
PDFNameTree nameTree = new PDFNameTree(doc, PDFNameTree.e_EmbeddedFiles);
Attachments attachments = new Attachments(doc, nameTree);
int count = attachments.getCount();
for (int i = 0; i < count; i++) {
String key = attachments.getKey(i);
FileSpec fileSpec = attachments.getEmbeddedFile(key);
if (fileSpec != null && !fileSpec.isEmpty()) {
String fileName = fileSpec.getFileName();
// Export attachment
fileSpec.exportToFile("/sdcard/exports/" + fileName);
}
}Example: Remove Attachments
java
// Remove a single attachment by key
attachments.removeEmbeddedFile("report.xlsx");
// Remove all attachments
attachments.removeAllEmbeddedFiles();API Reference
See the API Reference for full Attachments and FileSpec documentation.