#metadata #xmp #rdf #writer #serialization


Write XMP metadata, step by step

2 unstable releases

0.2.0 Oct 17, 2023
0.1.0 Feb 21, 2023

#486 in Encoding

Download history 1011/week @ 2023-11-03 858/week @ 2023-11-10 1313/week @ 2023-11-17 952/week @ 2023-11-24 874/week @ 2023-12-01 625/week @ 2023-12-08 631/week @ 2023-12-15 476/week @ 2023-12-22 544/week @ 2023-12-29 602/week @ 2024-01-05 664/week @ 2024-01-12 653/week @ 2024-01-19 599/week @ 2024-01-26 646/week @ 2024-02-02 710/week @ 2024-02-09 536/week @ 2024-02-16

2,589 downloads per month


1.5K SLoC


Crates.io Documentation

Write XMP metadata, step by step.

xmp-writer = "0.2"

XMP is a metadata format developed by Adobe. It is either embedded into files (e.g. PDF, JPEG, TIFF) or stored in a separate "side-car" file.

This crate provides a simple API to write XMP metadata. Start by creating a new XmpWriter, then add entries to it. Finally, call XmpWriter::finish to get the XMP metadata as a byte vector. Some properties contain a complex data type like a struct or an array. In this case, the writer returns a new struct that can be used to write the data. The reference to the struct must be dropped before the writer can be used again.


use xmp_writer::{LangId, DateTime, XmpWriter};

let mut writer = XmpWriter::new();
writer.creator(["Martin Haug"]);
writer.title([(Some(LangId("de")), "Titel"), (None, "Title")]);
writer.pdf_keywords("Keyword1, Keyword2");
writer.description([(None, "Description")]);
writer.date([DateTime::date(2021, 11, 06)]);

let mut colors = writer.colorants();

writer.creator_tool("xmp-writer 0.2.0");

println!("{}", std::str::from_utf8(&writer.finish(None)).unwrap());

See also


This crate forbids unsafe code and has no dependencies.


This crate is dual-licensed under the MIT and Apache 2.0 licenses.

No runtime deps