Repository navigation
Releases: PDFToolkit/pdf
Release list
v0.6.2
Preserved PDF 2.0 reference
The supplied ISO 32000-2:2020 EC3 PDF is now archived under its original filename and unchanged bytes. Its provenance identifies PDF Association sponsored access; the contributor confirmed permission to redistribute the supplied copy.
The bilingual references and source identity checks now match the public archive. The 19 MB reference remains excluded from Composer distributions. PHP APIs, PDF output and dependencies are unchanged.
Validated by the exact commit's Quality jobs on PHP 8.3, 8.4 and 8.5, the specification generator, original SHA-256 verification and documentation compatibility checks.
v0.6.1
Complete the EC3 coverage references for the existing PDF 2.0 Form resource and encrypted-catalog placement rules: completed errata 292 and 439, their physical pages and clauses. Both mechanisms were already implemented and validated in 0.6.0. PHP APIs, generated PDF behavior and locked dependencies are unchanged.
Complète les références EC3 des règles existantes sur les ressources des Form XObjects et le placement du catalogue chiffré : errata 292 et 439 Completed, pages physiques et clauses correspondantes. Ces mécanismes étaient déjà implémentés et validés en 0.6.0. L’API PHP, les PDF produits et les dépendances figées sont inchangés.
v0.6.0
Initial PDF 2.0 support
Core 0.6.0 adds explicit PDF 2.0 versions, immutable text-encoding strategies including UTF-8 with its BOM, and associated files for document/page/annotation/XObject owners and named marked-content properties. Validation follows the effective emitted graph and frozen incremental revisions, including EC3 version, Form resource and encrypted-catalog rules.
The standard and supplied source copy have separate identities. A reproducible ISO 32000-2:2020 EC3 pilot models four dictionary tables and 53 named entries with physical pages and correction review statuses. The complete PDF 2.0 catalogue and conformance remain pending; revision 6 encryption, native namespaces, document parts and DSS/timestamps are not implemented. The external reader still accepts PDF 1.0–1.7 only.
PHP 8.3 remains the minimum, with Quality validation on PHP 8.3, 8.4 and 8.5. The core has no production dependency on the reader or format converters. Their published 0.1.7 versions accept core 0.6. Existing PDF 1.7 behavior remains covered by the regression suite and independent oracles.
Validation: 1,665 tests / 16,318 assertions on each supported PHP version, PHPStan level 8, formatting, qpdf and independent readers/CMS/crypto checks, including nine PDF 2.0 structure fixtures and 48 PDF 2.0 public-key files.
Premiers mécanismes PDF 2.0
La version 0.6.0 ajoute les versions PDF 2.0 explicites, des stratégies immuables d’encodage des chaînes dont UTF-8 avec BOM, et les fichiers associés aux objets PDF et au contenu marqué. Les contrôles suivent le graphe effectivement écrit et les révisions incrémentales figées, avec les règles EC3 de version, de ressources des Form XObjects et de placement du catalogue chiffré.
Le pilote ISO 32000-2:2020 EC3 contient quatre tables et 53 entrées nommées, avec leurs pages sources et les statuts des corrections. L’implémentation intégrale de PDF 2.0 reste à poursuivre. Le lecteur externe conserve son périmètre PDF 1.0–1.7.
PHP 8.3 reste le minimum, avec validation sur 8.3, 8.4 et 8.5. Le core reste indépendant des modules optionnels en production ; leurs versions 0.1.7 sont compatibles avec la série 0.6.
v0.5.5
English is now the default for the README and public documentation entrypoints, with complete French editions of the README, security policy, release history and retained guide pointers. Executable examples are documented in English without changing their executed tokens or PDF demonstration values.
The PHP API, PHP 8.3 minimum and original reference PDF bytes are preserved. Optional development modules are locked to their published 0.1.6 releases; the core still has no production dependency on them.
Validated on PHP 8.3, 8.4 and 8.5 for this exact commit, including specification reproduction and independent PDF, encryption and signature oracles.
English documentation · Documentation française · French changelog
v0.5.4
The core and its optional modules are now available on Packagist. Install the
core with composer require "roukmoute/pdf:^0.5.4"; custom VCS repositories are
no longer needed in applications or in this package's development manifest.
The optional development modules are locked to their published 0.1.5
releases. Composer metadata links directly to the shared documentation, and the
README presents the public package pages and normal installation commands.
The PHP API, PHP 8.3 minimum, runtime source and original Adobe reference PDFs
are unchanged. Installing the core alone still installs no optional module.
Publication checks include the exact indexed source/distribution commits and
fresh installs using only the default Packagist repository. Package checks run
on PHP 8.3, 8.4 and 8.5, including the independent PDF validators.
See Packagist,
the shared documentation, and
the changelog.
v0.5.3
PDFToolkit now shares one documentation site at https://pdftoolkit.github.io/,
with dedicated entry points for the core, PDF reader, image converters and font
converters. The guides, tutorials, API exporter, site generator and assets live
in their dedicated repository.
The core retains its PHP objects and writer, executable examples, fixtures,
original Adobe PDFs and specification catalogues. The old /pdf/ site preserves
HTML navigation, queries, fragments and real binary downloads through a validated
compatibility deployment.
Development dependencies are locked to the published optional-module 0.1.4
releases. Shared API and examples use exact released source commits. Installing
the core still installs no optional module.
PHP 8.3 remains the minimum version, with CI on 8.3, 8.4 and 8.5. This is a
documentation and packaging update with no PHP API change.
See the changelog.
v0.5.2
The retained Adobe PDF 1.7 errata exposed a narrow outline correction: a root
whose top-level items are all explicitly closed must omit Count. The core now
does so while preserving item links, hidden descendants and signed item counts.
The four supplied Adobe originals are preserved byte-for-byte, with a catalogue
of identities and fingerprints. Independent validation checks their pages and
the portfolio's four embedded PDFs, including three exact duplicates of the
separate originals.
The reference guide
explains the documents, edition differences and the limits of Redact annotation
construction. The originals are downloadable from the documentation and excluded
from Composer distribution archives. This intake does not claim complete errata
coverage or destructive redaction support.
PHP 8.3 remains the minimum version, with CI on PHP 8.3, 8.4 and 8.5. Optional
packages remain at their stable 0.1.3 releases. No new production dependency or
PDF 2.0 implementation is introduced.
See the changelog
and archival source catalogue.
v0.5.1
Fix editable form appearances that could retain their old text while the field
was being edited in Acrobat Reader.
The text and choice examples now place the variable text, clipping and list
selection inside /Tx BMC ... EMC, keeping borders outside. This lets the
source-defined editing procedure replace the existing content; without the
marker, it appends new content to the previous appearance. The choice list now
draws its actual France/Belgique display labels on separate selected rows,
while FR/BE remain exported field values. The reference field in the signature
policy example follows the same structure.
The existing object APIs and form data are unchanged. Static appearances remain
valid; this release does not globally reject an appearance without the marker
or force NeedAppearances. Optional packages remain at their published 0.1.3 versions.
Independent pypdf parsing verifies all three appearances and exercises six
successive replacements, sixteen negative checks, three nested-content cases and
three no-marker append cases under each PHP 8.3, 8.4 and 8.5. Borders stay intact
and old/intermediate values disappear. The signature example's original CMS is
mathematically verified. These are stream and source-algorithm checks; interactive
Acrobat editing was unavailable in the local environment.
References: ISO 32000-1 §12.7.3.3, physical pages 443–444, and the retained Adobe
supplement page 121, notes 118–119. Both original PDF sources remain unchanged.
See the changelog,
AcroForm tutorial and updated PDF
and coverage evidence.
v0.5.0
Native object histories and signature-field policies
Core 0.5.0 adds executable PDF-native construction for object deletion/reuse,
navigation, embedded files, portable collections and signature-field policies.
PHP 8.3 remains the minimum version; PHP 8.3, 8.4 and 8.5 are validated.
- Preserve the exact emitted dictionaries, reference identities and encoded
pre-encryption stream bytes in immutable revision histories. Append revisions
after initial linearization without changing the original prefix or hint ranges. - Release indirect objects and reuse their numbers with the correct generations,
linked free lists and restrictions on object-stream membership. - Construct page labels, destination modes and viewport calculations, article
rings, transitions and presentation sequences against the effective page graph. - Construct supplied embedded-file bytes and derived Size/MD5 metadata, EF/RF/CI
relations, attachment name trees and typed collection schemas/items/sorts. - Apply actual written signature seeds, field locks, certificate and digest
choices, appearances and evidence requirements. Verify the cryptographic output
before filling Contents and retain historical signing restrictions. - Add four explained tutorials with generated PDFs and permanent independent
oracles. Fix direct versus historical indirect graph traversal and external
stream declarations across retired generations.
The optional reader, image and font packages are released as 0.1.3 and accept
core series 0.2–0.5. They remain development-only dependencies of this repository;
installing the core alone adds no optional package.
Validation: 1,426 tests / 15,342 assertions on each supported PHP version,
PHPStan level 8, style and reproducible source generation checks, plus independent
qpdf/pypdf, cryptographic and rendering checks for the declared mechanisms.
All dictionary tables from the two retained references are modeled. This release
does not claim complete semantic conformance. Full authenticated DocMDP,
FieldMDP and UR revision-difference analysis and remaining annotation, measurement,
media, function and barcode procedures remain tracked. Parsing/conversion,
rendering, XFA/JavaScript/media execution, timestamp/revocation acquisition and
certificate trust require explicit external components.
See the changelog,
0.5 API guide,
source-linked coverage
and tutorials with PDF previews.
0.4.0 — Mécanismes PDF natifs et couverture des références
Le core dispose désormais de constructions natives pour les formulaires AcroForm/FDF, la structure balisée, les polices et CMaps, les couleurs et maillages, les images et la transparence, le contenu optionnel, LZW et les prédicteurs, le chiffrement ISO/CMS, les signatures par plages d'octets, les références hybrides et la linéarisation.
Les objets sont explicites et leur état reste propre au document. Les cinq dernières fabriques statiques ont été remplacées par des constructeurs et objets de valeur. PHP 8.3 reste le minimum, avec CI jusqu'à PHP 8.5. Les modules optionnels 0.1.2 sont verrouillés sur leurs versions publiées et restent absents des dépendances de production.
Neuf tutoriels expliquent les constructions, avec scripts complets, PDF générés et aperçus. Les validations indépendantes contrôlent aussi les octets de filtres et de maillages, les indices de linéarisation, les graphes de références, les clés et enveloppes CMS, ainsi que les signatures des révisions originales chiffrées.
Cette version ne déclare pas les deux références entièrement implémentées. Les définitions des dictionnaires et les mécanismes effectivement exécutés sont distingués dans l'inventaire de couverture. La réutilisation des objets libres, les révisions après linéarisation, l'orchestration des politiques de signature et plusieurs règles de graphe restent suivies explicitement. Les processeurs externes de rendu, XFA, médias ou confiance des certificats restent séparés.
Voir les changements d'API, les tutoriels et le changelog.