Crate xmp_toolkit
source ·Expand description
§XMP Toolkit bindings for Rust
Adobe’s Extensible Metadata Platform (XMP) is a labeling technology that allows you to embed data about a file, known as metadata, into the file itself. More information on how partners and standards are using XMP is available at the XMP website.
§Key features
This XMP Toolkit crate implements a subset of the XMP metadata standard. This toolkit allows a desktop or mobile application to:
- Parse XMP metadata found in many file formats.
- Inspect and modify the XMP data model.
- Embed and update XMP metadata in many file formats.
The XmpMeta
struct contains most of the API functions for these features and is the best place to get started in understanding this crate.
§Contributions and feedback
We welcome contributions to this project. For information on contributing, providing feedback, and about ongoing work, see Contributing.
§Requirements
The toolkit requires Rust version 1.70.0 or newer. When a newer version of Rust becomes required, a new minor (1.x.0) version of this crate will be released.
§Crate features
This crate comes with the following features, which you can enable via your Cargo.toml
file:
chrono
- When enabled, adds conversions betweenXmpDateTime
andchrono::DateTime<FixedOffset>
.crt_static
- When enabled on Windows, uses the MSVC/MT
build flag to request the static version of the C runtime instead of the dynamic version. This may help with avoiding conflicts with other libraries in the overall application. (This feature has no effect on any platform other than Windows.)
None of these features are enabled by default.
§Supported platforms
The toolkit has been tested on the following operating systems:
-
Windows
- Only the MSVC build chain is supported on Windows. As discussed in #155, we would welcome a PR to enable GNU build chain support on Windows.
-
MacOS (Intel and Apple silicon)
-
Ubuntu Linux on x86 and ARM v8 (aarch64)
§C++ XMP Toolkit
This crate incorporates the December 2023 version of the C++ Adobe XMP Toolkit SDK.
When a newer version of the C++ XMP Toolkit is incorporated, a new minor (1.x.0) version of this crate will be released.
§Upgrading from earlier versions
This API is considered to to be stable; in other words, no further breaking changes are anticipated. For instructions on how to upgrade from various 0.x versions to 1.x, see the Upgrading guide.
Minor, non-breaking additions to the API surface may be added as the few remaining APIs in the C++ XMP_Meta
, XMP_Files
, and TXMPUtils
interfaces are exposed. Such changes will trigger minor (1.x.0) version increments when they happen.
§License
The xmp_toolkit
crate is distributed under the terms of both the MIT license and the Apache License (Version 2.0).
See LICENSE-APACHE and LICENSE-MIT.
Note that some components and dependent crates are licensed under different terms; please check the license terms for each crate and component for details.
Modules§
- Contains utility functions for mapping XMP/Exif-formatted GPS coordinates to decimal values.
- Standard XML namespace constants.
Structs§
- An iterator that provides access to items within a property array.
- Provides options for configuring the XMP parsing behavior provided by
XmpMeta::from_str_with_options
. - Provides options for configuring the XMP iteration behavior provided by
XmpMeta::iter
. - Option flags for
XmpFile::open_file
. - Provides options for configuring the XMP serialization behavior provided by
XmpMeta::to_string_with_options
. - The date portion of
XmpDateTime
. - Represents the concept of date and time as expressed in XMP.
- Describes error conditions returned by XMP Toolkit operations.
- Provides access to the main (document-level) metadata in many file formats.
- Iterator over an XMP data model or a subset thereof.
- Represents the data model of an XMP packet.
- Value of a single property found via iterating the XMP data model.
- The time portion of
XmpDateTime
. - The time zone portion of
XmpTime
. - Describes a single property or item in an array property.
Enums§
- Represents various reasons why an
XmpDateTime
can not be converted to aDateTime
. - Describes how a new item should be placed relative to existing items in an array.
- Describes which error type occurred.
Type Aliases§
- A specialized
Result
type for XMP Toolkit operations.