Sample code for 30+ languages & platforms
PowerBuilder

XMP Array Property - Bag, Seq, or Alt

See more XMP Examples

How to insert or update an XMP array property (bag, seq, or alt).

Chilkat PowerBuilder Downloads

PowerBuilder
integer li_rc
integer li_Success
oleobject loo_Xmp
oleobject loo_Xml
oleobject loo_Sa

li_Success = 0

// This requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.

loo_Xmp = create oleobject
li_rc = loo_Xmp.ConnectToNewObject("Chilkat.Xmp")
if li_rc < 0 then
    destroy loo_Xmp
    MessageBox("Error","Connecting to COM object failed")
    return
end if

// Load a JPG or TIF image file.
// Sample JPG's with XMP metadata may be found at:
// http://www.chilkatsoft.com/testData/xmp/sample1.jpg
// http://www.chilkatsoft.com/testData/xmp/sample2.jpg
// http://www.chilkatsoft.com/testData/xmp/sample3.jpg
li_Success = loo_Xmp.LoadAppFile("sample1.jpg")
if li_Success <> 1 then
    Write-Debug loo_Xmp.LastErrorText
    destroy loo_Xmp
    return
end if

Write-Debug "Num embedded XMP docs: " + string(loo_Xmp.NumEmbedded)

// Assuming there is at least one, get the 1st.
// (There is typically never more than one, but theoretically it's possible.)

loo_Xml = loo_Xmp.GetEmbedded(0)
if loo_Xmp.LastMethodSuccess = 1 then

    // Create an object to hold one or more string values.
    loo_Sa = create oleobject
    li_rc = loo_Sa.ConnectToNewObject("Chilkat.StringArray")

    li_Success = loo_Sa.Append("value_1")
    li_Success = loo_Sa.Append("value_2")
    // ...

    li_Success = loo_Xmp.AddArray(loo_Xml,"bag","Iptc4xmpCore:Chilkat",loo_Sa)
    if li_Success <> 1 then
        Write-Debug loo_Xmp.LastErrorText
    else
        // Save the JPG.
        li_Success = loo_Xmp.SaveAppFile("modified.jpg")
        if li_Success <> 1 then
            Write-Debug loo_Xmp.LastErrorText
        end if

    end if

    destroy loo_Xml

else
    Write-Debug loo_Xmp.LastErrorText
end if



destroy loo_Xmp
destroy loo_Sa