mirror of
https://github.com/storytold/pdfcraft.git
synced 2026-11-10 13:01:29 +00:00
Conflicts, and how they were resolved: - cos writer.rs and lib.rs: main now numbers a full save in `full_save_order` and exports `reachable_objects`, the object numbers a full save writes, for the pattern guard. This branch had added the same walk as `walk` and `reachable`. Main's is kept, with its alias handling, and this branch's is dropped: `globals::kept` is now `reachable_objects`, so the JBIG2 cleanup and the pattern guard read one walk. `kept` returns the walk's error (a save that can't number its objects), which redaction and Remove Hidden Information pass on. The cos test of what is reachable, and two redaction tests, read `reachable_objects` instead. The exports keep this branch's `DECODE_PARMS_KEYS` and main's `TextChars`, `civil_from_days` and `new_file_id`. - redact lib.rs: main unlinks pruned patterns from `/Pages` nodes after `unlink_doomed`; this branch replaced `restore_shared_jbig2` with `globals::unshare`. Both stay, the unlink first: an image a pruned pattern's cell drew leaves the file with it, and is a user of a dictionary that left too. - redact sanitize.rs: main's `strip_outline_actions` and this branch's `unshare_unmarked` both stay. At the end of `remove_hidden`, `unshare_unmarked` runs after main's `unlink_undrawn`, so an image unlinked for being drawn nowhere takes a shared dictionary with it, and is followed by main's `require_full_save_with_new_id`. - redact image.rs: `MAX_PIXELS` is `pub(crate)` on both sides; the comment names `globals::without_dictionary`, where this branch moved `without_globals`. Tests: `an_undrawn_image_unlinked_takes_a_shared_jbig2_dictionary_too` (Remove Hidden Information, through `unlink_undrawn`) and `an_image_a_pruned_patterns_cell_drew_takes_a_shared_jbig2_dictionary_too` (a redaction, through `unlink_pruned_patterns`) pin the order of the two new routes before `unshare`. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AmsdeUCdTaD72jkDw2pJKY