#rdf #xmp #writer #metadata

xmp-writer

Write XMP metadata, step by step

5 unstable releases

0.3.2 Apr 2, 2025
0.3.1 Feb 4, 2025
0.3.0 Sep 30, 2024
0.2.0 Oct 17, 2023
0.1.0 Feb 21, 2023

#260 in Encoding

Download history 2085/week @ 2025-02-01 2401/week @ 2025-02-08 4162/week @ 2025-02-15 3764/week @ 2025-02-22 3277/week @ 2025-03-01 3068/week @ 2025-03-08 3370/week @ 2025-03-15 3750/week @ 2025-03-22 3670/week @ 2025-03-29 3318/week @ 2025-04-05 2756/week @ 2025-04-12 2931/week @ 2025-04-19 5322/week @ 2025-04-26 3995/week @ 2025-05-03 3824/week @ 2025-05-10 3872/week @ 2025-05-17

17,578 downloads per month
Used in 17 crates (2 directly)

MIT/Apache

105KB
2K SLoC

xmp-writer

Crates.io Documentation

Write XMP metadata, step by step.

[dependencies]
xmp-writer = "0.3"

XMP is an ISO standard specifying a metadata format for files, originally 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.

Example

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

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

let mut colors = writer.colorants();
colors.add_colorant().swatch_name("Red");
colors.add_colorant().swatch_name("Green");
drop(colors);

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

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

See also

Safety

This crate forbids unsafe code and has no dependencies.

License

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

No runtime deps

Features