Sample code for 30+ languages & platforms
PowerBuilder

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 PowerBuilder Downloads

PowerBuilder
integer li_rc
integer li_Success
oleobject loo_Bd
oleobject loo_Xml
oleobject loo_Bd2

li_Success = 0

// Load our PDF file.
loo_Bd = create oleobject
li_rc = loo_Bd.ConnectToNewObject("Chilkat.BinData")
if li_rc < 0 then
    destroy loo_Bd
    MessageBox("Error","Connecting to COM object failed")
    return
end if
li_Success = loo_Bd.LoadFile("qa_data/helloWorld.pdf")
if li_Success <> 1 then
    Write-Debug "Failed to load PDF file."
    destroy loo_Bd
    return
end if

// 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>

loo_Xml = create oleobject
li_rc = loo_Xml.ConnectToNewObject("Chilkat.Xml")

li_Success = loo_Xml.LoadXmlFile("qa_data/xml/xmlToContainPdf.xml")
if li_Success <> 1 then
    Write-Debug "Failed to load XML file."
    destroy loo_Bd
    destroy loo_Xml
    return
end if

// Insert the PDF into the XML.
loo_Xml.NewChild2("xyz|pdfData",loo_Bd.GetEncoded("base64"))

// Show the new XML:
Write-Debug loo_Xml.GetXml()

// 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:
loo_Bd2 = create oleobject
li_rc = loo_Bd2.ConnectToNewObject("Chilkat.BinData")

li_Success = loo_Bd2.AppendEncoded(loo_Xml.GetChildContent("xyz|pdfData"),"base64")
li_Success = loo_Bd2.WriteFile("qa_output/helloWorld.pdf")

Write-Debug "Success."


destroy loo_Bd
destroy loo_Xml
destroy loo_Bd2