DataFlex
DataFlex
Insert PDF as Base64 into XML, then Extract back to PDF File
See more XML Examples
Demonstrates how to insert any file into XML using base64 encoding, and then extract back to the original file. This example embeds a PDF in the XML, but the type of file does not matter. It can be any type of file.Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoBd
Handle hoXml
Handle hoBd2
String sTemp1
Move False To iSuccess
// Load our PDF file.
Get Create (RefClass(cComChilkatBinData)) To hoBd
If (Not(IsComObjectCreated(hoBd))) Begin
Send CreateComObject of hoBd
End
Get ComLoadFile Of hoBd "qa_data/helloWorld.pdf" To iSuccess
If (iSuccess <> True) Begin
Showln "Failed to load PDF file."
Procedure_Return
End
// Load the following XML:
//
// <?xml version="1.0" encoding="utf-8" ?>
// <something>
// <xyz>
// <abc123>A base64 encoded PDF file will be inserted under this node.</abc123>
// </xyz>
// </something>
Get Create (RefClass(cComChilkatXml)) To hoXml
If (Not(IsComObjectCreated(hoXml))) Begin
Send CreateComObject of hoXml
End
Get ComLoadXmlFile Of hoXml "qa_data/xml/xmlToContainPdf.xml" To iSuccess
If (iSuccess <> True) Begin
Showln "Failed to load XML file."
Procedure_Return
End
// Insert the PDF into the XML.
Get ComGetEncoded Of hoBd "base64" To sTemp1
Send ComNewChild2 To hoXml "xyz|pdfData" sTemp1
// Show the new XML:
Get ComGetXml Of hoXml To sTemp1
Showln sTemp1
// The XML now looks like this:
// <?xml version="1.0" encoding="utf-8" ?>
// <something>
// <xyz>
// <abc123>A base64 encoded PDF file will be inserted under this node.</abc123>
// <pdfData>JVBERi0xL ... UlRU9GCg==</pdfData>
// </xyz>
// </something>
// To extract the PDF data out and restore the PDF file:
Get Create (RefClass(cComChilkatBinData)) To hoBd2
If (Not(IsComObjectCreated(hoBd2))) Begin
Send CreateComObject of hoBd2
End
Get ComGetChildContent Of hoXml "xyz|pdfData" To sTemp1
Get ComAppendEncoded Of hoBd2 sTemp1 "base64" To iSuccess
Get ComWriteFile Of hoBd2 "qa_output/helloWorld.pdf" To iSuccess
Showln "Success."
End_Procedure