Repository navigation
pdfce v0.15.0 - four things that could not be edited, and now can
v0.15.0: four things that could not be edited, and now can
Workspace version 0.14.0 -> 0.15.0. A minor bump: substantial new public
surface on pdfce-core (bookmark moves, expand/collapse, on-demand font
resources, annotation rotation) and new pdfce-cli subcommands.
43 Pass commits since v0.14.0.
WHAT AN OPERATOR GETS
The headline is a standing instruction closing. The operator named four things
about a PDF that pdfce could not fully edit and asked for all four. All four
now work:
ROTATION anything carrying a /Rect turns about a point you choose
(Pass 155.0), and ce dimensions turn too (Pass 159.0) --
a rotation is an isometry, so the measured value is unchanged
by construction.
ce DIMENSIONS rotate; scaling was DECLINED by name rather than half-built,
because it has no honest reading -- set_group_scale is the
operation actually wanted.
BOOKMARKS rename and delete (Pass 156.0/157.0), then REORDER and
RE-PARENT (Pass 161.0). A bookmark dragged anywhere in the
tree takes its children with it; its destination never moves.
Expand/collapse ships alongside, as a separate verb, because
whether a move should reveal a collapsed destination has two
defensible answers and both now exist.
FONTS text can be restyled to a face the document DOES NOT CONTAIN
(Pass 162.0), for the fourteen faces every PDF reader is
required to have. pdfce authors the font resource on demand,
with widths, embedding nothing. A face outside those fourteen
still refuses by name -- that needs a real font program.
ALSO IN THIS RELEASE
- a comment can be written onto a shape that already exists (Pass 154.0),
and markup can be authored at an opacity in one undo entry (Pass 81.1); - annotations can be MOVED and RESIZED, not only created and deleted
(Pass 149.0/151.0), with a stroke-width toggle the operator ruled must
exist; - OCR is an edit to the open document rather than a different file
somewhere (Pass 135.0/135.1); - the objects inside a form XObject are reachable, so clicking one finds it
(Pass 136.0/136.1/136.2/138.0); - a spot colour that painted NOTHING on a print-bound page now paints
(Pass 130.3), an overprinting image respects overprint (Pass 130.2), and
grey stops knocking spot ink out (Pass 143.0); - a gradient and a solid of the same ink are the same colour (Pass 137.x);
- the CMYK default became Calibrated by operator ruling (Pass 153.0);
- form-field properties are editable after placement, including size
(Pass 134.0).
TWO DEFECTS FIXED THAT NOBODY REPORTED
Both were found by running the shipped binary rather than by a failing test:
- the font work was writing a resource the file did not contain: the CLI's
save path was one of THREE, and only two were wired. The command reported
success and saved a file whose text named a font that was not there. - two refusal messages told the operator to use a verb that has never
existed (rotate_widget,set_dimension_label), read at the exact moment
they were blocked. Both messages now say the capability is not built yet,
and a gate (check-cited-verbs-exist.py) makes a phantom impossible.
VERIFICATION
bash tools/run-gates.sh ............ 28 commands, all clean
python tools/check-passes-filed.py --strict-tip ... clean
python tools/check-commits-filed.py ............... clean
cargo fmt --all --check / cargo clippy -D warnings clean
cargo tree -p pdfce-core / -p pdfce-render ........ no GUI, no network deps
portable package built and smoke-tested from a fresh folder
No dependency changes since v0.14.0, so THIRD_PARTY_LICENSES.md is unchanged
and was not regenerated.
Co-Authored-By: Claude Opus 5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session_01AcgfF2qoRL3i9NtC9JXRit