12 releases
Uses new Rust 2024
| 0.6.0 | Aug 12, 2025 |
|---|---|
| 0.5.1 | May 28, 2024 |
| 0.5.0 | Sep 8, 2023 |
| 0.4.4 | Feb 6, 2023 |
| 0.3.0 | Aug 24, 2019 |
#2119 in Parser implementations
1,868 downloads per month
Used in 7 crates
(via vexy-vsvg)
495KB
355 lines
svg-metadata
What is it?
This crate extracts metadata from SVG files. Currently it reads the following attributes:
viewBoxwidthheight
You can add more!
Usage Examples
use svg_metadata::{Metadata, ViewBox};
fn main() {
let svg = r#"
<svg viewBox="0 1 99 100" xmlns="http://www.w3.org/2000/svg">
<rect x="0" y="0" width="100%" height="100%"/>
</svg>
"#;
let meta = Metadata::parse(svg).unwrap();
assert_eq!(
meta.view_box,
Some(ViewBox {
min_x: 0.0,
min_y: 1.0,
width: 99.0,
height: 100.0
})
);
}
Width and height elements contain the units (if available):
use svg_metadata::{Metadata, Height, Width, Unit};
fn main() {
let svg = r#"
<svg width="100cm" height="50cm" xmlns="http://www.w3.org/2000/svg">
<rect x="0" y="0" width="100%" height="100%"/>
</svg>
"#;
let meta = Metadata::parse(svg).unwrap();
assert_eq!(
meta.width,
Some(Width {
width: 100.0,
unit: Unit::Cm
})
);
assert_eq!(
meta.height,
Some(Height {
height: 50.0,
unit: Unit::Cm
})
);
}
(You can also parse files directly with parse_file().)
Credits
The SVG fixtures used for testing are provided by
under their respective licenses.
Dependencies
~2–3MB
~55K SLoC