mirror of
https://framagit.org/almet/jardiflore.git
synced 2025-04-28 12:02:37 +02:00
Do the right computations when finding the number of pages
This commit is contained in:
parent
68981092ad
commit
5295ca0c96
1 changed files with 9 additions and 7 deletions
16
main.rs
16
main.rs
|
@ -8,12 +8,13 @@ use printpdf::{
|
|||
use structopt::StructOpt;
|
||||
|
||||
use ab_glyph::{FontRef, PxScale};
|
||||
use image::{EncodableLayout, ImageBuffer, Rgba};
|
||||
use image::{ImageBuffer, Rgba};
|
||||
use imageproc::drawing::draw_text_mut;
|
||||
|
||||
// A4 dimensions
|
||||
const A4_WIDTH: f32 = 210.0;
|
||||
const A4_HEIGHT: f32 = 297.0;
|
||||
|
||||
// Configuration for the label
|
||||
const DPI: f32 = 300.0;
|
||||
const MM_TO_PX: f32 = DPI / 25.4;
|
||||
|
@ -169,7 +170,8 @@ fn combine_labels(
|
|||
labels: &[ImageBuffer<Rgba<u8>, Vec<u8>>],
|
||||
output_dir: &str,
|
||||
) -> Result<(), Box<dyn std::error::Error>> {
|
||||
let labels_per_page = (A4_HEIGHT / LABEL_HEIGHT).floor() as usize;
|
||||
let labels_per_page = (A4_HEIGHT / (LABEL_HEIGHT / MM_TO_PX)) as usize;
|
||||
println!("Labels per page: {}", labels_per_page);
|
||||
|
||||
// Create a new PDF document
|
||||
let mut doc = PdfDocument::new("Labels Document");
|
||||
|
@ -182,8 +184,6 @@ fn combine_labels(
|
|||
let mut y_position = A4_HEIGHT - LABEL_HEIGHT;
|
||||
|
||||
for label in chunk {
|
||||
// let image = RawImage::decode_from_bytes(label.as_raw(), &mut Vec::new()).unwrap();
|
||||
// let bytes = include_bytes!("output/label_GV-Ek9pYRis.png");
|
||||
let pixels = label.clone().into_raw();
|
||||
let image = RawImage {
|
||||
pixels: RawImageData::U8(pixels),
|
||||
|
@ -194,10 +194,12 @@ fn combine_labels(
|
|||
};
|
||||
let image_id = doc.add_image(&image);
|
||||
|
||||
// Add image to page at current y position
|
||||
page_contents.push(Op::UseXobject {
|
||||
id: image_id,
|
||||
transform: XObjectTransform::default(),
|
||||
transform: XObjectTransform {
|
||||
translate_y: Some(printpdf::Pt(y_position)),
|
||||
..Default::default()
|
||||
},
|
||||
});
|
||||
|
||||
// Move y position up for next label
|
||||
|
@ -216,7 +218,6 @@ fn combine_labels(
|
|||
|
||||
// Write PDF bytes to file
|
||||
std::fs::write("test.pdf", pdf_bytes)?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
@ -238,5 +239,6 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|||
for record in records {
|
||||
labels.push(generate_label(record));
|
||||
}
|
||||
println!("labels: {}", labels.len());
|
||||
combine_labels(&labels, &opts.output_dir)
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue