Minimal XMP packet (RDF/XML) extractor.

Module pdfXmpExtended | Source packages/front/office/pdf/src/extra/xmp-extended.js | Deps pdfErrors | Worker-safe yes

Tokenizes an XMP RDF/XML packet for a fixed set of well-known namespaces and pulls out tag→value pairs. Not a full RDF parser — it walks the element stream and harvests qualified tags whose prefix maps to a known namespace.

Supported namespaces: dc, xmp, xmpMM, pdf, pdfaid, pdfuaid.

Resolve

const ext = runtime.resolve('pdfXmpExtended');
// Returns: { parsePacket, extract, group, KNOWN_NAMESPACES }

API

Member Signature Returns
parsePacket (string | Uint8Array) => { pairs, grouped } Top-level entry point.
extract (input) => Pair[] Flat list { prefix, ns, localName, value, attrs }.
group (pairs) => { [prefix]: { [localName]: value | values[] } } Re-groups a flat pair list.
KNOWN_NAMESPACES object URI → prefix.

Examples

Parse

const ext = runtime.resolve('pdfXmpExtended');
const r = ext.parsePacket(xmpBytes);
r.grouped.dc.title;    // 'My Document'
r.grouped.pdfaid.part; // '2'

Flat extract

ext.extract(xmpBytes);
// [ { prefix: 'dc', ns: '...', localName: 'title', value: '...', attrs: {} }, … ]

Errors

Code Class When
pdf/xmp2/bad-input ParseError Neither a string nor a Uint8Array.
pdf/xmp2/unclosed-tag ParseError Malformed XML (unclosed tag).

See also