Sample code for 30+ languages & platforms
Delphi DLL

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 Delphi DLL Downloads

Delphi DLL
uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Xml;

...

procedure TForm1.Button1Click(Sender: TObject);
var
success: Boolean;
xml: HCkXml;
pdfElement: HCkXml;

begin
success := False;

xml := CkXml_Create();

success := CkXml_LoadXmlFile(xml,'qa_data/soap/soapWithPdf.xml');
if (success <> True) then
  begin
    Memo1.Lines.Add(CkXml__lastErrorText(xml));
    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 := CkXml_FindChild(xml,'s:Body|ObtenerPDFResponse|ObtenerPDFResult|a:PDF');
if (CkXml_getLastMethodSuccess(xml) <> True) then
  begin
    Memo1.Lines.Add('Did not find the PDF element at the expected location.');
    Exit;
  end;

success := CkXml_SaveBinaryContent(pdfElement,'qa_output/out.pdf',False,False,'');
if (success <> True) then
  begin
    Memo1.Lines.Add(CkXml__lastErrorText(xml));
    Exit;
  end;

Memo1.Lines.Add('Successfully extracted and saved the PDF.');

CkXml_Dispose(xml);

end;