1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
//! RightKit PDF engine: the pure, Tauri-free half of the PDF edit pipeline, extracted from
//! ViewRight's `crates/pdf` (the most mature donor), plus ScrapeRight text extraction and Legion
//! page merge as opt-in features.
//!
//! Every function takes bytes, paths, or in-memory `lopdf::Document`s and returns typed values.
//! Path authorization (the host's file broker) stays in the app; [`commit`] provides the atomic
//! disk write (through `rightkit-fs`) once the host has authorized a target.
//!
//! | module | responsibility |
//! |-----------|-------------------------------------------------------------------|
//! | `model` | wire types: commands, islands, locators, typed `PdfEditError` |
//! | `inspect` | page graph walk: text islands with quads, fonts, source locators |
//! | `font` | bundled + system font catalog, subsetting, ToUnicode |
//! | `compose` | sparse-write composition of edit commands onto fresh bytes |
//! | `save` | candidate verification, single-use save tokens, commit resolution |
//! | `commit` | (feature `edit`) lock, recheck and rightkit-fs replace of a token |
//! | `merge` | (feature `merge`) merge PDFs, select/reorder pages |
//! | `organize`| (feature `merge`) delete, reorder, rotate, insert pages; keeps outline and labels |
//! | `extract` | (feature `extract`) text extraction, whole-document and per page |
//! | `scan` | scanned-page detection (no text layer, page-sized image) |
//! | `raster` | (feature `raster`) render scanned pages to gray/RGBA/PNG for OCR |
//! | `redact` | (feature `redact`) remove content under marks, fail closed |
//! | `forms` | (feature `forms`) AcroForm fields, set values, appearances |
//! | `optimize`| (feature `optimize`) unused objects, measured image downsampling |
//! | `write` | build a new PDF: JPEG pages, ICC profiles, page sizes (`write_to` needs `edit`) |