Sample code for 30+ languages & platforms
Ruby

Extract and Save PDF from SOAP XML

See more XML Examples

Demonstrates how to extract and save PDF file that is embedded in SOAP XML (or any XML).

Chilkat Ruby Downloads

Ruby
require 'chilkat'

success = false

xml = Chilkat::CkXml.new()

success = xml.LoadXmlFile("qa_data/soap/soapWithPdf.xml")
if (success != true)
    print xml.lastErrorText() + "\n";
    exit
end

# The XML we loaded looks like this:

# <?xml version="1.0" encoding="utf-8" ?>
# <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
#     <s:Body>
#         <ObtenerPDFResponse xmlns="http://xyz.org/">
#             <ObtenerPDFResult xmlns:a="http://schemas.xyz.org/something" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
#                 <a:CBB i:nil="true" />
#                 <a:CodigoConfirmacion i:nil="true" />
#                 <a:ErrorDetallado />
#                 <a:ErrorGeneral i:nil="true" />
#                 <a:FechaGenerada i:nil="true" />
#                 <a:FolioGenerado i:nil="true" />
#                 <a:OperacionExitosa>true</a:OperacionExitosa>
#                 <a:PDF>JVBERi0xLjQKJe...</a:PDF>
#                 <a:XML i:nil="true" />
#             </ObtenerPDFResult>
#         </ObtenerPDFResponse>
#     </s:Body>
# </s:Envelope>

# pdfElement is a CkXml
pdfElement = xml.FindChild("s:Body|ObtenerPDFResponse|ObtenerPDFResult|a:PDF")
if (xml.get_LastMethodSuccess() != true)
    print "Did not find the PDF element at the expected location." + "\n";
    exit
end

success = pdfElement.SaveBinaryContent("qa_output/out.pdf",false,false,"")
if (success != true)
    print xml.lastErrorText() + "\n";
    exit
end

print "Successfully extracted and saved the PDF." + "\n";