What's Changed
- Fix main's Windows build: xtask's temp folder builder is mutable only on Unix by @bflatastic in #6712
- Land renderer patches, layer auto state, auto-tag artifacts, export clips and print page lookup (#3969, #4393, #4396, #4410, #4433, #4459, #4159, #5075, #5973) by @bflatastic in #6711
- fix(a11y): mark vector graphics and images as artifacts in autotag_text (#4080) by @jonathanwxh-cell in #4159
- M2: an Indexed image with a short lookup table or an out-of-range hival is drawn as most readers draw it, and one with no table is skipped with a warning (view.render-pages) by @mtlcl410 in #4393
- M2: layers open in the state the view auto state sets, and the Layers panel follows /Order (view.layers-panel) by @mtlcl410 in #4396
- fix(render): degenerate subpaths, all-zero dash arrays and negative line widths stroke as the spec says (hayro-interpret patch 61) by @mtlcl410 in #4410
- M2: zero-area fills and clips mark the pixels they touch (view.render-pages) by @mtlcl410 in #4433
- M2: the standard 14 fonts fit the Euro to its standard width (view.render-pages) by @mtlcl410 in #4459
- fix(edit): Office export respects a form's /BBox and a page's re/W/n clip by @MichaelMuClaude in #5075
- fix(print,engine): read the page tree once when finding which pages' text reads up by @dylanmtaylor in #5973
- Land forms, links, find and redaction-save fixes (#4496, #4532, #3567, #3773, #4470, #4474, #4497, #5658) by @bflatastic in #6710
- M9: empty signature fields show a Sign tab, sized to the field by @EricKaden in #3773
- M3: relative links resolve against the document's base URI, and a link is active only in its QuadPoints (view.follow-links) by @mtlcl410 in #4474
- M6: list boxes show and pick the option /I names, and a single-select list shows one value (#4531) by @mtlcl410 in #4532
- M5: the text selection bar stays inside the pages' area (#5577) by @Lcoding15 in #5658
- Land comment groups, appearance defaults, callout parts, pop-ups and stamp lines (#4358, #4365, #4094, #2137, #2345) by @bflatastic in #6713
- M6: custom stamps can carry a line filled in when they are placed (#1741) by @mtlcl410 in #2345
- Windows gate: the owner-rights test allows an elevated run by @bflatastic in #6729
- Land XFA layout, scripting and form fixes (#3589, #4336, #4359, #4517, #4537, #4608, #4662, #4664, #4784, #4791, #5010, #5122, #5124, #5153, #5225, #5368, #5369, #5370, #5393) by @bflatastic in #6716
- M12: screen-only and print-only XFA objects are shown and printed as the form says by @EricKaden in #4336
- M12: XFA enter and exit scripts run whenever a field gains or loses focus by @EricKaden in #4359
- M12: run an XFA signature field's preSign scripts before it is signed and postSign after by @EricKaden in #4517
- XFA: fields and exclusion groups that must be filled in are Required by @EricKaden in #4537
- fix(xfa): AcroForm field walks read each field once and bound what they queue by @lowtide-lab in #5122
- Land print production, viewer, attachment and optimizer changes (#1918, #1998, #2539, #2348, #2701, #3806, #4139, #4378, #4401, #4763, #5259, #5508, #5316, #4434, #4440, #6092, #6098) by @bflatastic in #6714
- Allow Ctrl+wheel zoom in an unfocused window (#3736) by @MarekSpodBiedry in #3806
- M10: landscape sheets stay landscape on CUPS, with a test at each print path (rebases #3068; @zdblazer) by @EricKaden in #4763
- M12: a PDF portfolio opens on its initial document and shows its files (#1652) by @EricKaden in #5259
- M12: edit attachment descriptions by @Harrison-Booth in #5508
- fix(a11y): annotation checks and form tagging stop copying shared annotation data by @dylanmtaylor in #6092
- fix(forms): AFSimple_Calculate folds field values as it reads them, within an allowance by @dylanmtaylor in #6098
- Search: keep the match in the middle while a zoom is still on (#3530, builds on #3547) by @Lcoding15 in #4139
- M3: a password prompt keeps a place in the open queue for its retry by @bflatastic in #6731
- Align stream decode cap with renderer at 256 MiB by @eliets2 in #6585
- M10: the Print dialog remembers two-sided, grayscale, collate, sizing, comments & forms and Print as image (#2001, #6392) by @mtlcl410 in #2103
- feat(print): add Folio and Folio / F4 paper presets (#4777) by @YusufMntm in #4953
- fix(print): fall back to the lpoptions listing when the PPD is unreadable (#4699) by @lordwotton29 in #4703
- M10: grayscale with Print as image prints on a driver that keeps no grayscale (#5806) by @austin62jake in #5882
- M10: each printer keeps its paper, sizing and two-sided choice across restarts; the last printer is preselected (#2001) by @FredApps in #6779
- FormCalc: a script its own clock stops is abandoned, as when the wait runs out first (flaky hostile_formcalc test) by @FredApps in #6783
- fix(print): M10 — Windows ya no cambia las letras de las fuentes TrueType incrustadas (#3132) by @j7121994 in #4098
- fix: cap print dialog height to the screen so it can't overflow top/b… by @desingtorres-eng in #6223
- Print: list printers without asking drivers; ask only about the one picked (#2192) by @art804 in #3554
- M10 #5130: resolve Windows printer-default duplex before spooling by @robertobulltech in #5180
- M10: Windows prints at the printer's resolution, not ~96 dpi; Canon and Toshiba ticket fixes (craft-print 0e4943cb) (#4941) by @FredApps in #6793
- fix(preflight): handle typeless annotations, indexed colour, and indirect filters by @jonathanwxh-cell in #5279
- Updates: Restart to Update with unsaved changes opens the save prompt by @dotCooCoo in #6726
- Zeroize key material, KDF buffers, and UI password drafts (#3928) by @jonathanwxh-cell in #4427
- fix(ui): keep added image corner resize responsive and clip out-of-bounds drag preview (#4477, #3938) by @jonathanwxh-cell in #4625
- Booklet printing: creep compensation by @KenM76 in #6790
- M6: the Calculate tab shows and edits a field's custom calculation script (#6630) by @ljkx in #6717
- fix(annot,ui-egui): guard comment edits against non-comments and stale state (#3916) by @jonathanwxh-cell in #4673
- M10: preserve printable Link appearances (#5022) by @robertobulltech in #5028
- M6: form buttons open the files attached to their document (exportDataObject) by @EricKaden in #3575
- fix(ui): All tools ▸ Edit a PDF turns on Edit text & images at once by @meethere in #4605
- fix(export): skip empty HTML runs and clamp heading levels to h6 by @jonathanwxh-cell in #6136
- Updates test: answer the startup prompt before clicking in Preferences by @bflatastic in #6799
- M12: XFA forms with many repeated rows lay out in linear time (form.xfa-dynamic) by @mtlcl410 in #6776
- M2: a JBIG2 mask with a large symbol dictionary draws, and one a decoder limit refuses takes its picture with it (#6722) by @Piohrun in #6784
- M7: a font's metrics can be read within a caller's decode allowance (#6239, merged with main) by @bflatastic in #6800
- M7: a font's metrics can be read within a caller's decode allowance by @Piohrun in #6239
- M7: paragraph edits keep the advance of the text they drop (edit.text-edit) by @mtlcl410 in #2968
- M12: dynamic XFA forms tab in their template's traversal order by @EricKaden in #4149
- fix(ui): keys under a dialog or a menu leave the pages alone (keyboard routing, part 1) by @alehel in #6608
- fix(edit): preserve source fonts in mixed-script paragraphs (#2778, merged with main) by @bflatastic in #6806
- M8: redaction keeps an image a form without resources still draws (#6341, merged with main) by @bflatastic in #6805
- M8: redaction keeps an image a form without resources still draws by @Piohrun in #6341
- Windows: Tesseract and the --control tools start without a console window (#6732) by @ljkx in #6735
- M3: a file named with open parameters opens at their destination (#3425) by @hazeliscoding in #5049
- fix(redact): a shared JBIG2 dictionary leaves with whatever used it, by any route by @Piohrun in #5698
- Find and replace text in Edit text mode: a Replace row in the Find box, Replace all as one undo step by @regendorf-ux in #2467
- M10: Windows prints a large image whole: drawn as tiles under Windows.Data.Pdf's cap (#5131) by @austin62jake in #5897
- Print: custom paper sizes, kept per printer with its setup (re-lands #2381) by @FredApps in #6830
- fix(annot): drop Apple Markup's stale copy when a page's annotations change by @Kiwi-Kwi in #2829
- M10: Recognize text no longer clips the first and last letters of a line by @huppiflupp in #5058
- Bump storytold/egui to 725a39fc (lands #6699) by @bflatastic in #6824
- Print a selected area from Take a Snapshot (lands #2491) by @bflatastic in #6820
- M10: preserve annotation placement precision in vector prints by @KyleKassen in #5002
- fix(forms): ignore print requests from automatic field scripts by @enriquemelzer-bit in #4166
- M10: retain printed artwork with indirect annotation metadata (lands #4668) by @FredApps in #6855
- fix(print): keep the localized reset label off the properties panel title by @lordwotton29 in #5550
- fix(ui-egui): keep hotbar picker stationary while resizing by @patel-vansh in #6513
- M10: a booklet's both sides follow a driver that keeps its own two-sided setting (#5772) by @austin62jake in #5903
- M10: preserve NoRotate appearance geometry in vector printing by @KyleKassen in #5036
- Print in grayscale prints on a Windows driver with no grey option (#5806) by @FredApps in #6863
- Do not send duplex to printers without two-sided support by @eliets2 in #6673
- Render: an isolated CMYK group of any size blends in CMYK, in bands by @FredApps in #6885
- fix(print): auto-detect printer paper size and add page setup sync (fixes #5861) by @Combiler01 in #6100
- M10: preserve annotation layers in vector print output by @KyleKassen in #5019
- Print: a printer's remembered paper wins over its driver's default paper by @FredApps in #6906
- fix: Continuous Scrolling toggle not working in Preference tab (#6780) by @Combiler01 in #6889
- macOS: a job that names no paper tray asks for Auto Select (craft-print 1ee01a4c, #3752) by @FredApps in #6905
- M4: bind property drafts with edit-session and replay UI scenarios by @PerchAnton in #4594
- Test: the non-UTF-8 output-name probe test doesn't run on macOS by @FredApps in #6913
- fix(platform): preserve visibility when saving files to network paths (#5001) by @YusufMntm in #5048
- feat(js): expose document page boxes by @Harrison-Booth in #5501
- Test: at the minimum width on macOS the main menu may be the folded Menu button by @FredApps in #6920
- CI: the workspace's tests on macOS each night (and on demand) by @FredApps in #6921
- Fix #5211: make calculateNow synchronous by @Harrison-Booth in #5304
- Test: wait for the paper row before clicking Custom… while discovery is pending by @FredApps in #6925
- Add JavaScript push-button caption methods by @Harrison-Booth in #5505
- Fix #5211: persist JavaScript field colours by @Harrison-Booth in #5499
- fix(optimize): bound each unused-resource decode by the remaining shared budget by @dylanmtaylor in #6046
- cos: drop the duplicate decoded_strict_within that breaks main by @dylanmtaylor in #6933
- fix(cos): remove duplicate decoded_strict_within that broke main by @dylanmtaylor in #6934
- packaging: use [[ for bash tests (SonarCloud S7688) by @dylanmtaylor in https://github.com//pull/6932
- M7: replacing a line keeps both of two dropped quote copies' line move and spacing (edit.text-edit) by @mtlcl410 in #2961
- fix(cos): cap the total entries a materialized xref-stream chain merges (#5082) by @Higgs32584 in #5090
- fix(engine, automation): Action Wizard and doc_batch honour JavaScript being off (#5080) by @Higgs32584 in #5088
- Print: the printer's own paper sizes in the Paper list, named as the job's media by @MaxFairwinds in #2672
- fix(render): bound the objects lopdf's fallback parses from object streams and arrays (#5083) by @Higgs32584 in #5095
- fix: anchor comments to highlighted text by @DevSidd2006 in #3763
- fix(js): follow every reading of a script in the nesting guard, so a regex can't put it out of phase (#5079) by @Higgs32584 in #5087
- Print: flatten transparent sheets for GDI (v3) printer drivers (#6155, #5838, #5940) by @FredApps in #6955
- fix: integrate persistent AcroForm script workflows with native prompts and appearance writeback by @Doom666DE in #5699
- feat(prc): PrcFile::units, the model's unit from its model file by @KenM76 in #6919
- perf(organize): decode the XMP packet once for repeated document-information reads by @KenM76 in #6918
- fix(cos): a clone that edits an object stream or a /Length stops reading what other clones cached by @KenM76 in #6910
- fix(crypt, engine): refuse page extraction when Protect allows any change except extracting pages (#5081) by @Higgs32584 in #5089
- M10: open Word, Excel and PowerPoint files through LibreOffice by @max1e6 in #3059
- feat(forms): open, Will Save and Will Print actions, widget pointer/focus scripts, setItems/setAction/toSource (port of #344) by @FredApps in #6969
- M7: a font's metrics are past their allowance only when it refused a read by @Piohrun in #6813
- M11: Optimize stores a picture's one-bit masks as monochrome images by @Piohrun in #6825
- M8: the Type 3 cleanup charges the page only when there is a Type 3 font by @Piohrun in #6860
- M8: the redaction walk reads a form's /Matrix entries by reference by @Piohrun in #6886
- M8: redaction reads an operator's operands from the end, as the renderer does by @Piohrun in #6927
- M11: Optimize stores one-bit images and masks past 80 million pixels as monochrome images by @Piohrun in #6935
- M8: redaction refuses a page whose content it can't fully parse by @Piohrun in #6882
- fix(redact): apply marks with an indirect /Subtype and judge inline annotations by @dylanmtaylor in #5849
- fix(forms): deleting a field removes ancestors it leaves without kids by @dylanmtaylor in #6997
- fix(redact): a covered clip-and-paint path leaves an empty clip, not its outline by @dylanmtaylor in #6996
- Release: PdfCraft v0.21.0 by @FredApps in #6995
New Contributors
- @YusufMntm made their first contribution in #4953
- @lordwotton29 made their first contribution in #4703
- @j7121994 made their first contribution in #4098
- @desingtorres-eng made their first contribution in #6223
- @Kiwi-Kwi made their first contribution in #2829
- @enriquemelzer-bit made their first contribution in #4166
- @patel-vansh made their first contribution in #6513
- @Higgs32584 made their first contribution in #5090
- @MaxFairwinds made their first contribution in #2672
- @DevSidd2006 made their first contribution in #3763
- @Doom666DE made their first contribution in #5699
Full Changelog: v0.20.0...v0.21.0