From b00ce70504115aa97d3fd5a4fd3d6e86d1621a29 Mon Sep 17 00:00:00 2001 From: Breval Ferrari Date: Sat, 5 Apr 2025 19:43:40 -0400 Subject: [PATCH] pdf to image example --- bong/src/main.rs | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/bong/src/main.rs b/bong/src/main.rs index fab8ebf..589f1bd 100644 --- a/bong/src/main.rs +++ b/bong/src/main.rs @@ -2,8 +2,9 @@ use std::fs::File; use anyhow::{anyhow, Context, Error}; use bingus::{ - doc::printpdf::{FontId, Op, PdfDocument, TextItem}, - Bendable, + doc::printpdf::PdfDocument, + img::{Dimensions, GrayImage, RgbImage}, + Bendable, Bytes, }; use clap::Parser; use cli::Cli; @@ -12,15 +13,22 @@ mod cli; fn main() -> Result<(), Error> { let args = Cli::parse(); - File::open(args.input_file) + let bytes = File::open(args.input_file) .context("opening file")? .bend_into::((), Default::default()) .map_err(|e| anyhow!("parsing PDF: {e}"))? - .map(|t| Op::WriteText { - items: vec![TextItem::Text(String::from("h"))], - font: FontId::new(), - }) - .bend_into::(Box::new(args.output_file), Default::default()) + .bend_into::((), Default::default())?; + let dimensions = { + let c = bytes.len().isqrt().try_into().context("image too big")?; + Dimensions { + width: c, + height: c, + } + }; + bytes + .bend_into::(dimensions, Default::default()) + .context("bending into an image")? + .save(args.output_file) .context("saving output file")?; Ok(())