Skip to main content

katana_document_viewer/export_postprocess/
adapter.rs

1#[derive(Debug, Clone, PartialEq, Eq)]
2pub struct PdfPostprocessInput<'a> {
3    pub pdf: &'a [u8],
4}
5
6#[derive(Debug, Clone, PartialEq, Eq)]
7pub struct PdfPostprocessOutput {
8    pub pdf: Vec<u8>,
9    pub elapsed_millis: u128,
10}
11
12#[derive(Debug, Clone, PartialEq, Eq)]
13pub struct PdfPostprocessError {
14    pub message: String,
15}
16
17impl PdfPostprocessError {
18    pub fn new(message: &str) -> Self {
19        Self {
20            message: message.to_string(),
21        }
22    }
23}
24
25pub trait PdfPostprocessAdapter {
26    fn name(&self) -> &str;
27    fn postprocess_pdf(
28        &self,
29        input: &PdfPostprocessInput<'_>,
30    ) -> Result<PdfPostprocessOutput, PdfPostprocessError>;
31}
32
33pub struct KaruiPdfPostprocessAdapter;
34
35impl PdfPostprocessAdapter for KaruiPdfPostprocessAdapter {
36    fn name(&self) -> &str {
37        "karui"
38    }
39
40    fn postprocess_pdf(
41        &self,
42        _input: &PdfPostprocessInput<'_>,
43    ) -> Result<PdfPostprocessOutput, PdfPostprocessError> {
44        Err(PdfPostprocessError::new(
45            "Karui PDF engine is not exposed as a stable library or CLI for KDV integration",
46        ))
47    }
48}