katana_document_viewer/export_postprocess/
adapter.rs1#[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}