Skip to content

v0.10.0

Choose a tag to compare

@roukmoute roukmoute released this 15 Oct 17:09
· 31 commits to master since this release
3d5777c

Native protected form and annotation updates

The common incremental writer now classifies bounded filling of existing text, choice, checkbox and radio fields under DocMDP P2/P3, plus P3 markup creation, modification and detachment. It checks the complete frozen revision, historical FieldMDP/Adobe locks, ownership, shared resources and unrelated objects. Variable-text appearance replacement preserves bytes outside the isolated Tx region and prevents graphics/text/path state from crossing it.

Clear native UR3 histories require an explicit UsageRightsAuthorization for each update. UsageRightsAuthority receives the actual verified signer facts; signed rights, application operation scope, saving conditions and historical restrictions all apply. A declaration alone grants no authority.

Migration and limits: keep the actual native FileRevision instances. Existing signing and PDF2 DSS/timestamp maintenance remain separate operations. Templates, rich text, arbitrary new resources, external revision-history normalization, legacy/encrypted UR and unrestricted PDF2 UR remain outside this bounded extension. Mathematical signature validity does not establish PKI trust. The unmodified pyHanko policy cannot classify some child-widget appearances or markup edits; its reported disagreement is retained separately from signature, structure and rendered-pixel checks.

Validation: PHP 8.3, 8.4 and 8.5; PHPUnit, PHPStan, style, reproducible specification generators, retained source hashes and the repository's independent PDF oracles. The protected-revision oracle checks 148 PDFs, 97 native refusals, 198 rendered pixels, 32 native form combinations, four annotation chains and eleven UR3 CMS files per runtime. The complete Quality matrix and documentation compatibility checks passed for release commit 3d5777c before tagging.

Documentation: https://pdftoolkit.github.io/
Changelog: https://github.com/PDFToolkit/pdf/blob/v0.10.0/CHANGELOG.md

Français

Le writer incrémental classe désormais le remplissage borné des champs texte, choix, cases à cocher et boutons radio sous P2/P3, ainsi que la création, modification et suppression par détachement d'annotations de marquage sous P3. Il vérifie toute la révision figée, les verrous historiques, les propriétaires, les ressources partagées et les changements étrangers à l'opération. Les apparences textuelles conservent les octets hors de leur région Tx isolée.

Les historiques UR3 natifs non chiffrés exigent une autorité applicative et une portée explicites à chaque mise à jour, en intersection avec les droits signés, leurs conditions de sauvegarde et DocMDP/FieldMDP. Aucun dictionnaire déclaré ni validité mathématique seule n'accorde une confiance PKI.

Conserver les véritables instances FileRevision natives. Les opérations de signature et maintenance restent séparées. Templates, texte enrichi, ressources arbitraires nouvelles, historiques externes et autres variantes UR restent explicitement hors périmètre. Les limites de classement de pyHanko sont conservées dans les preuves et la documentation.

Historique français : https://github.com/PDFToolkit/pdf/blob/v0.10.0/CHANGELOG.fr.md