Sample code for 30+ languages & platforms
PureBasic

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

PureBasic
IncludeFile "CkXml.pb"

Procedure ChilkatExample()

    success.i = 0

    xml.i = CkXml::ckCreate()
    If xml.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkXml::ckLoadXmlFile(xml,"qa_data/soap/soapWithPdf.xml")
    If success <> 1
        Debug CkXml::ckLastErrorText(xml)
        CkXml::ckDispose(xml)
        ProcedureReturn
    EndIf

    ; 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.i = CkXml::ckFindChild(xml,"s:Body|ObtenerPDFResponse|ObtenerPDFResult|a:PDF")
    If CkXml::ckLastMethodSuccess(xml) <> 1
        Debug "Did not find the PDF element at the expected location."
        CkXml::ckDispose(xml)
        ProcedureReturn
    EndIf

    success = CkXml::ckSaveBinaryContent(pdfElement,"qa_output/out.pdf",0,0,"")
    If success <> 1
        Debug CkXml::ckLastErrorText(xml)
        CkXml::ckDispose(xml)
        ProcedureReturn
    EndIf

    Debug "Successfully extracted and saved the PDF."


    CkXml::ckDispose(xml)


    ProcedureReturn
EndProcedure