From 6517257c496ec1d031ef9c5dc3ef927ea583c2c7 Mon Sep 17 00:00:00 2001 From: Kushagra Kumar Date: Wed, 2 Sep 2026 08:06:28 +0530 Subject: [PATCH] feat(pdf): integrate continuous multi-page PDF rendering in image_store --- crates/project/src/image_store.rs | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/crates/project/src/image_store.rs b/crates/project/src/image_store.rs index 00cea8fd38..1abb1544bf 100644 --- a/crates/project/src/image_store.rs +++ b/crates/project/src/image_store.rs @@ -152,17 +152,11 @@ impl ImageItem { pub fn compute_metadata_from_bytes(image_bytes: &[u8]) -> Result { if image_bytes.starts_with(b"%PDF-") { let engine = kkpdf_zed::pdfium::PdfiumEngine::new(); - let options = kkpdf_zed::rasterizer::RasterizerOptions { - target_dpi: 144.0, - zoom_factor: 1.0, - dark_mode: false, - saturation_threshold: 0.18, - }; - let arc_bytes = Arc::new(image_bytes.to_vec()); - let rendered_page = engine.render_page_from_bytes(&arc_bytes, 0, options)?; + let doc = engine.load_document_from_bytes(image_bytes, None)?; + let (width, height) = doc.total_pixel_size(1.0, 144.0, 20); return Ok(ImageMetadata { - width: rendered_page.width, - height: rendered_page.height, + width, + height, file_size: image_bytes.len() as u64, format: image::ImageFormat::Png, colors: ImageColorInfo::from_color_type(image::ColorType::Rgba8), @@ -960,14 +954,14 @@ fn create_gpui_image(content: Vec) -> anyhow::Result> { saturation_threshold: 0.18, }; let arc_bytes = Arc::new(content); - let rendered_page = engine.render_page_from_bytes(&arc_bytes, 0, options)?; + let rendered_doc = engine.render_document_from_bytes(&arc_bytes, options, 20)?; let mut png_bytes: Vec = Vec::new(); let mut cursor = std::io::Cursor::new(&mut png_bytes); let img_buf = image::ImageBuffer::, _>::from_raw( - rendered_page.width, - rendered_page.height, - rendered_page.rgba_buffer.as_ref().clone(), + rendered_doc.width, + rendered_doc.height, + rendered_doc.rgba_buffer.as_ref().clone(), ) .ok_or_else(|| anyhow::anyhow!("Failed to convert RGBA to ImageBuffer"))?;