use std::fs; use std::io::Read; use cbz2pdf::formats::pdf::PdfWriter; use cbz2pdf::formats::FormatWriter; use cbz2pdf::model::{Document, ImagePage}; #[test] fn pdf_writer_writes_valid_pdf_header() { // Build a simple 2x2 red image page let mut img = image::DynamicImage::new_rgb8(2, 2).to_rgb8(); for p in img.pixels_mut() { *p = image::Rgb([255, 0, 0]); } let page = ImagePage { name: "page1.jpg".to_string(), image: image::DynamicImage::ImageRgb8(img), jpeg_dct: None, }; let doc = Document::new(vec![page]); let temp_dir = tempfile::tempdir().expect("create temp dir"); let output = temp_dir.path().join("out.pdf"); let writer = PdfWriter; writer.write(&doc, &output).expect("failed to write PDF"); // Assert file exists and has PDF header let mut f = fs::File::open(&output).expect("pdf not created"); let mut header = [0u8; 5]; f.read_exact(&mut header).expect("cannot read header"); assert_eq!(&header, b"%PDF-", "missing PDF header"); let meta = fs::metadata(&output).unwrap(); assert!(meta.len() > 0, "empty pdf"); // temp_dir cleans up automatically on drop }