Sample code for 30+ languages & platforms
Zig

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

Zig
const std = @import("std");
const chilkat = @import("chilkat");

pub fn main(init: std.process.Init) !void {
    const alloc = init.arena.allocator();

    const xml = try chilkat.Xml.init();
    defer xml.deinit();

    xml.loadXmlFile("qa_data/soap/soapWithPdf.xml") catch {
        std.debug.print("{s}\n", .{try xml.getLastErrorText(alloc)});
        return;
    };

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

    const pdf_element = xml.findChild("s:Body|ObtenerPDFResponse|ObtenerPDFResult|a:PDF") catch {
        std.debug.print("Did not find the PDF element at the expected location.\n", .{});
        return;
    };
    defer pdf_element.deinit();

    pdf_element.saveBinaryContent("qa_output/out.pdf", false, false, "") catch {
        std.debug.print("{s}\n", .{try xml.getLastErrorText(alloc)});
        return;
    };

    std.debug.print("Successfully extracted and saved the PDF.\n", .{});
}