Sample code for 30+ languages & platforms
Java

Extract Embedded Files from PDF

Demonstrates how to get information about the embedded files (if any) contained within a PDF, and shows how to extract each file.

Note: This example requires Chilkat v9.5.0.95 or greater.

Chilkat Java Downloads

Chilkat2 Java
import com.chilkatsoft.chilkat2.BinData;
import com.chilkatsoft.chilkat2.ChilkatException;
import com.chilkatsoft.chilkat2.JsonObject;
import com.chilkatsoft.chilkat2.Pdf;

public class ChilkatExample {

    public static void main(String[] args) {
        // This example requires the Chilkat API to have been previously unlocked.
        // See Global Unlock Sample for sample code.

        Pdf pdf = new Pdf();

        try {
            pdf.loadFile("qa_data/pdf/embedded_files/my_embedded_files_test.pdf");
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        // Note: The embedded file functionality was added in Chilkat v9.5.0.95

        // How many embedded files exist within the opened PDF?
        int numFiles = pdf.getNumEmbeddedFiles();
        System.out.println("Number of embedded files: " + numFiles);

        JsonObject json = new JsonObject();
        json.setEmitCompact(false);

        BinData bd = new BinData();

        // Get information about each file, and extract each to the filesystem.
        int i = 0;
        while (i < numFiles) {
            try {
                pdf.getEmbeddedFileInfo(i, json);
            } catch (ChilkatException e) {
                System.out.println(e.getLastErrorText());
                return;
            }

            System.out.println(json.emit());

            // Get the filename from the JSON.
            String filename = "someFile.dat";

            // The filename SHOULD always be present..
            if (json.hasMember("filename")) {
                filename = json.stringOf("filename");
            }

            // Get the file data.
            try {
                pdf.getEmbeddedFileBd(i, bd);
            } catch (ChilkatException e) {
                System.out.println(e.getLastErrorText());
                return;
            }

            // Save the contents of the bd to the filename (in the current working directory) in the filesystem.
            try {
                bd.writeFile(filename);
            } catch (ChilkatException e) {
                System.out.println("Failed to write output file.");
            }

            i = i + 1;
        }

        // Sample output for the above code:

        // Number of embedded files: 3
        // {
        //   "filename": "employees.json",
        //   "desc": "JSON",
        //   "subType": "application/json",
        //   "size": 159,
        //   "creationDate": "D:20230715170506-05'00'",
        //   "modDate": "D:20160207153838-05'00'"
        // }
        //
        // {
        //   "filename": "rsaPubKey.pem",
        //   "desc": "RSA Public Key PEM",
        //   "size": 451,
        //   "creationDate": "D:20230715170546-05'00'",
        //   "modDate": "D:20150724133153-05'00'"
        // }
        //
        // {
        //   "filename": "starfish.jpg",
        //   "desc": "Starfish JPG",
        //   "subType": "image/jpeg",
        //   "size": 6229,
        //   "creationDate": "D:20230715170356-05'00'",
        //   "modDate": "D:20080529103055-05'00'"
        // }
    }
}