pub struct Image {
pub image: ImageXObject,
}
Expand description
Image - wrapper around an ImageXObject
to allow for more control
within the library
Fields§
§image: ImageXObject
The actual image
Implementations§
source§impl<'a> Image
impl<'a> Image
sourcepub fn try_from<T: ImageDecoder<'a>>(image: T) -> Result<Self, ImageError>
pub fn try_from<T: ImageDecoder<'a>>(image: T) -> Result<Self, ImageError>
Examples found in repository?
examples/image.rs (line 21)
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
fn main() {
let (doc, page1, layer1) =
PdfDocument::new("printpdf graphics test", Mm(210.0), Mm(297.0), "Layer 1");
let current_layer = doc.get_page(page1).get_layer(layer1);
// currently, the only reliable file formats are bmp/jpeg/png
// this is an issue of the image library, not a fault of printpdf
let image_bytes = include_bytes!("../assets/img/BMP_test.bmp");
let mut reader = Cursor::new(image_bytes.as_ref());
let decoder = BmpDecoder::new(&mut reader).unwrap();
let image = Image::try_from(decoder).unwrap();
let rotation_center_x = Px((image.image.width.0 as f32 / 2.0) as usize);
let rotation_center_y = Px((image.image.height.0 as f32 / 2.0) as usize);
// layer,
image.add_to_layer(
current_layer.clone(),
ImageTransform {
rotate: Some(ImageRotation {
angle_ccw_degrees: 45.0,
rotation_center_x,
rotation_center_y,
}),
translate_x: Some(Mm(10.0)),
translate_y: Some(Mm(10.0)),
..Default::default()
},
);
doc.save(&mut BufWriter::new(File::create("test_image.pdf").unwrap()))
.unwrap();
}
More examples
examples/image_alpha.rs (line 21)
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
fn main() {
let (doc, page1, layer1) =
PdfDocument::new("printpdf graphics test", Mm(210.0), Mm(297.0), "Layer 1");
let current_layer = doc.get_page(page1).get_layer(layer1);
// currently, the only reliable file formats are bmp/jpeg/png
// this is an issue of the image library, not a fault of printpdf
let image_bytes = include_bytes!("../assets/img/dog_alpha.png");
let mut reader = Cursor::new(image_bytes.as_ref());
let decoder = PngDecoder::new(&mut reader).unwrap();
let image = Image::try_from(decoder).unwrap();
let rotation_center_x = Px((image.image.width.0 as f32 / 2.0) as usize);
let rotation_center_y = Px((image.image.height.0 as f32 / 2.0) as usize);
// layer,
image.add_to_layer(
current_layer.clone(),
ImageTransform {
rotate: Some(ImageRotation {
angle_ccw_degrees: 0.0,
rotation_center_x,
rotation_center_y,
}),
translate_x: Some(Mm(50.0)),
translate_y: Some(Mm(50.0)),
..Default::default()
},
);
doc.save(&mut BufWriter::new(File::create("test_image.pdf").unwrap()))
.unwrap();
}
pub fn from_dynamic_image(image: &DynamicImage) -> Self
source§impl Image
impl Image
sourcepub fn add_to_layer(self, layer: PdfLayerReference, transform: ImageTransform)
pub fn add_to_layer(self, layer: PdfLayerReference, transform: ImageTransform)
Adds the image to a specific layer and consumes it.
This is due to a PDF weirdness - images are basically just “names” and you have to make sure that they are added to resources of the same page as they are used on.
You can use the “transform.dpi” parameter to specify a scaling - the default is 300dpi
Examples found in repository?
examples/image.rs (lines 27-39)
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
fn main() {
let (doc, page1, layer1) =
PdfDocument::new("printpdf graphics test", Mm(210.0), Mm(297.0), "Layer 1");
let current_layer = doc.get_page(page1).get_layer(layer1);
// currently, the only reliable file formats are bmp/jpeg/png
// this is an issue of the image library, not a fault of printpdf
let image_bytes = include_bytes!("../assets/img/BMP_test.bmp");
let mut reader = Cursor::new(image_bytes.as_ref());
let decoder = BmpDecoder::new(&mut reader).unwrap();
let image = Image::try_from(decoder).unwrap();
let rotation_center_x = Px((image.image.width.0 as f32 / 2.0) as usize);
let rotation_center_y = Px((image.image.height.0 as f32 / 2.0) as usize);
// layer,
image.add_to_layer(
current_layer.clone(),
ImageTransform {
rotate: Some(ImageRotation {
angle_ccw_degrees: 45.0,
rotation_center_x,
rotation_center_y,
}),
translate_x: Some(Mm(10.0)),
translate_y: Some(Mm(10.0)),
..Default::default()
},
);
doc.save(&mut BufWriter::new(File::create("test_image.pdf").unwrap()))
.unwrap();
}
More examples
examples/image_alpha.rs (lines 27-39)
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
fn main() {
let (doc, page1, layer1) =
PdfDocument::new("printpdf graphics test", Mm(210.0), Mm(297.0), "Layer 1");
let current_layer = doc.get_page(page1).get_layer(layer1);
// currently, the only reliable file formats are bmp/jpeg/png
// this is an issue of the image library, not a fault of printpdf
let image_bytes = include_bytes!("../assets/img/dog_alpha.png");
let mut reader = Cursor::new(image_bytes.as_ref());
let decoder = PngDecoder::new(&mut reader).unwrap();
let image = Image::try_from(decoder).unwrap();
let rotation_center_x = Px((image.image.width.0 as f32 / 2.0) as usize);
let rotation_center_y = Px((image.image.height.0 as f32 / 2.0) as usize);
// layer,
image.add_to_layer(
current_layer.clone(),
ImageTransform {
rotate: Some(ImageRotation {
angle_ccw_degrees: 0.0,
rotation_center_x,
rotation_center_y,
}),
translate_x: Some(Mm(50.0)),
translate_y: Some(Mm(50.0)),
..Default::default()
},
);
doc.save(&mut BufWriter::new(File::create("test_image.pdf").unwrap()))
.unwrap();
}
Trait Implementations§
source§impl From<ImageXObject> for Image
impl From<ImageXObject> for Image
source§fn from(image: ImageXObject) -> Self
fn from(image: ImageXObject) -> Self
Converts to this type from the input type.
Auto Trait Implementations§
impl RefUnwindSafe for Image
impl Send for Image
impl Sync for Image
impl Unpin for Image
impl UnwindSafe for Image
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more