Skip to main content

graphitepdf_kit/
compress.rs

1use crate::error::{GraphitePdfKitError, Result};
2use flate2::{Compression, write::ZlibEncoder};
3
4#[cfg(feature = "tracing")]
5use tracing::instrument;
6
7#[cfg_attr(feature = "tracing", instrument(skip(data)))]
8pub fn flate_encode(data: &[u8]) -> Result<Vec<u8>> {
9    let mut encoder = ZlibEncoder::new(Vec::new(), Compression::default());
10    std::io::Write::write_all(&mut encoder, data).map_err(|e| {
11        GraphitePdfKitError::CompressionError(format!("Failed to write to encoder: {}", e))
12    })?;
13    encoder.finish().map_err(|e| {
14        GraphitePdfKitError::CompressionError(format!("Failed to finish compression: {}", e))
15    })
16}