Merge PR #3227: M11: target PDF version and object streams option in PDF Optimizer

Conflicts: docs/roadmap.md: all status lines kept, M10 row from main, M11 row with #3227's two sentences. parity/acrobat-features.toml: save-with-object-streams entry from #3227 with its test paths under tests/it/.
This commit is contained in:
aiongg
2026-10-24 06:25:55 +00:00
13 changed files with 290 additions and 17 deletions
+10 -10
View File
@@ -7274,11 +7274,11 @@ title = "Make compatible with a chosen PDF version"
area = "K"
tier = "P1"
milestone = "M11"
status = "planned"
commands = []
tools = []
evidence = []
notes = ""
status = "partial"
commands = ["optimize.advanced"]
tools = ["doc_optimize"]
evidence = ["crates/optimize/tests/optimize.rs::compatibility_level_sets_version_unpacks_for_1_4_and_checks_encryption", "crates/automation/tests/automation.rs::optimizing_through_tools", "crates/ui-egui/tests/create.rs::the_pdf_optimizer_dialog_picks_a_preset"]
notes = "Retain existing (default), PDF 1.4, 1.5, 1.6, 1.7 or 2.0 in PDF Optimizer and doc_optimize; writes the chosen %PDF- header, clears any overriding catalog /Version, disables and unpacks object streams and cross-reference streams for PDF 1.4, and refuses when the document's encryption requires a newer PDF version (#3090). Partial compatibility only: content newer than the target is neither detected nor converted (including optional content, JPX images, 16-bit images, OpenType fonts and PDF 2.0 features); the chosen header does not guarantee compatibility with older readers"
[[feature]]
id = "optimize.optimizer"
@@ -7574,11 +7574,11 @@ title = "Compress document structure (object streams)"
area = "K"
tier = "P1"
milestone = "M11"
status = "partial"
commands = ["file.save_as"]
tools = ["doc_save"]
evidence = ["crates/cos/tests/it/writer.rs::full_save_packs_objects_into_object_streams"]
notes = "on by default for full saves; no Optimizer option yet"
status = "shipped"
commands = ["file.save_as", "optimize.advanced"]
tools = ["doc_save", "doc_optimize"]
evidence = ["crates/cos/tests/it/writer.rs::full_save_packs_objects_into_object_streams", "crates/optimize/tests/optimize.rs::compatibility_level_sets_version_unpacks_for_1_4_and_checks_encryption", "crates/automation/tests/it/automation.rs::optimizing_through_tools", "crates/ui-egui/tests/it/create.rs::the_pdf_optimizer_dialog_picks_a_preset"]
notes = "on by default for full saves and in PDF Optimizer ▸ Clean Up (and doc_optimize object_streams); turning it off or targeting PDF 1.4 unpacks object streams into standalone objects with a classic cross-reference table"
[[feature]]
id = "optimize.flate-unencoded"