DataFlex
DataFlex
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 DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoPdf
Integer iNumFiles
Variant vJson
Handle hoJson
Variant vBd
Handle hoBd
Integer i
String sFilename
String sTemp1
Boolean bTemp1
Move False To iSuccess
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
Get Create (RefClass(cComChilkatPdf)) To hoPdf
If (Not(IsComObjectCreated(hoPdf))) Begin
Send CreateComObject of hoPdf
End
Get ComLoadFile Of hoPdf "qa_data/pdf/embedded_files/my_embedded_files_test.pdf" To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoPdf To sTemp1
Showln sTemp1
Procedure_Return
End
// Note: The embedded file functionality was added in Chilkat v9.5.0.95
// How many embedded files exist within the opened PDF?
Get ComNumEmbeddedFiles Of hoPdf To iNumFiles
Showln "Number of embedded files: " iNumFiles
Get Create (RefClass(cComChilkatJsonObject)) To hoJson
If (Not(IsComObjectCreated(hoJson))) Begin
Send CreateComObject of hoJson
End
Set ComEmitCompact Of hoJson To False
Get Create (RefClass(cComChilkatBinData)) To hoBd
If (Not(IsComObjectCreated(hoBd))) Begin
Send CreateComObject of hoBd
End
// Get information about each file, and extract each to the filesystem.
Move 0 To i
While (i < iNumFiles)
Get pvComObject of hoJson to vJson
Get ComGetEmbeddedFileInfo Of hoPdf i vJson To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoPdf To sTemp1
Showln sTemp1
Procedure_Return
End
Get ComEmit Of hoJson To sTemp1
Showln sTemp1
// Get the filename from the JSON.
Move "someFile.dat" To sFilename
// The filename SHOULD always be present..
Get ComHasMember Of hoJson "filename" To bTemp1
If (bTemp1 = True) Begin
Get ComStringOf Of hoJson "filename" To sFilename
End
// Get the file data.
Get pvComObject of hoBd to vBd
Get ComGetEmbeddedFileBd Of hoPdf i vBd To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoPdf To sTemp1
Showln sTemp1
Procedure_Return
End
// Save the contents of the bd to the filename (in the current working directory) in the filesystem.
Get ComWriteFile Of hoBd sFilename To iSuccess
If (iSuccess = False) Begin
Showln "Failed to write output file."
End
Move (i + 1) To i
Loop
// 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'"
// }
End_Procedure