Repository navigation
Releases: PDFToolkit/pdf-reader
Release list
0.2.3 — Resolve optional declarations safely
Optional encryption and catalog-version declarations now use the bounded document resolver before feature validation. An absent or null /Encrypt, including an indirect null, does not request authentication. Malformed values remain parse errors; a non-null encryption dictionary raises the dedicated EncryptedPdfException without decrypting the source.
Indirect catalog /Version names and null values are accepted while preserving the original header and explicitly rejecting unsupported versions.
Validation: 342 tests and 813 assertions on PHP 8.3, 8.4 and 8.5, PHPStan, format checks, Composer platform/audit checks and independent pypdf/qpdf fixtures. Exact candidate: 8c7d013dafd6c5821eecc27af8c8af225d4de584, CI.
v0.2.2
Verified encrypted PDF trailers now raise EncryptedPdfException, which remains compatible with UnsupportedPdfFeature handlers. Applications can route authentication by the exception type without matching words in diagnostic messages.
Validation: 291 PHPUnit tests, PHPStan and PSR-12; exact candidate CI on PHP 8.3, 8.4 and 8.5, including independent pypdf/qpdf PDF fixtures. English and French security documentation is updated.
Reader 0.2.1 — Scope documentation
Correct a stale PDF 2.0 rejection sentence in both README editions and align the development branch alias with 0.2. No PHP runtime change.
Quality CI passed for the exact candidate a349dbd on PHP 8.3, 8.4 and 8.5, including all reader tests, analysis, formatting and independent PDF validation.
Reader 0.2.0 — PDF 2.0 object syntax
Accept PDF 2.0 headers and catalog version overrides in the bounded object reader. This enables optional PDF-to-HTML interpretation without coupling the core to external reading. Existing explicit rejections, including encrypted files, remain in place.
Add independently generated PDF 2.0 fixtures for classic cross-reference data, catalog overrides and object streams, with pypdf/qpdf validation. Update English and French scope documentation.
Validated candidate: 6af6805; 291 tests / 678 assertions locally on PHP 8.3, 8.4 and 8.5; Quality CI passed for all three versions with static analysis, formatting and independent PDF validators.
This is syntactic object reading, not automatic rendering, accessibility validation, encryption support or complete interpretation of every PDF 2.0 mechanism.
Reader 0.1.9 — Stable reference download
English
The English and French README now link to the stable PDF 1.7 standard download on the shared documentation site. Moving reference documents inside the core repository therefore preserves this reader documentation link. The downloaded PDF retains the original bytes and SHA-256.
This documentation release preserves the PHP API, reading behaviour, dependency constraints and locked versions.
Changelog: https://github.com/PDFToolkit/pdf-reader/blob/v0.1.9/CHANGELOG.md
Documentation: https://pdftoolkit.github.io/modules/reader/
Français
Les README anglais et français pointent désormais vers le téléchargement stable de la norme PDF 1.7 sur le site documentaire commun. Le rangement des documents de référence dans le dépôt du core conserve ainsi ce lien de la documentation du lecteur. Le PDF téléchargé garde ses octets et son empreinte SHA-256 d’origine.
Cette version documentaire conserve l’API PHP, le comportement de lecture, les contraintes de dépendances et leurs versions verrouillées.
Changelog : https://github.com/PDFToolkit/pdf-reader/blob/v0.1.9/CHANGELOG.fr.md
Documentation : https://pdftoolkit.github.io/fr/modules/reader/
v0.1.8
Accepts stable roukmoute/pdf:^0.7 alongside the existing supported core releases, while retaining an explicit, bounded reader for PDF 1.0–1.7. Core writer additions do not add PDF 2.0 parsing, decryption or import to this package.
Publication checks lock the already released core 0.6.2; runtime constraints stay stable and development tool versions are unchanged. README and architecture guides explain the boundary in English and French. PHP 8.3+ is required.
Validation: complete quality checks on PHP 8.3, 8.4 and 8.5, independent qpdf/pypdf structure and nested-page fixtures, and executable reader examples. Local compatibility checks also exercise the module with the core 0.7 candidate.
v0.1.7
Accepts core 0.6 alongside the existing 0.2, 0.3, 0.4 and 0.5 series. The release lock uses published core 0.5.5; every other dependency version and commit is preserved.
Reading remains limited to PDF 1.0–1.7. A PDF 2.0 header or catalog version is explicitly refused. Module PHP sources, tests, fixtures and examples retain their exact bytes. Installation and compatibility guidance are updated in English and French.
Compatibility preflight against the local core 0.6 candidate passes 285 tests and 654 assertions on each of PHP 8.3, 8.4 and 8.5. PHPStan level 8, formatting, strict Composer validation, locked platform requirements and advisory checks pass.
Accepte le core 0.6 avec les séries existantes 0.2, 0.3, 0.4 et 0.5. Le lock de publication utilise le core publié 0.5.5 ; chaque autre version et commit de dépendance est conservé.
La lecture reste limitée aux PDF 1.0 à 1.7. Un en-tête ou une version de catalogue PDF 2.0 est explicitement refusé. Les sources PHP du module, tests, fixtures et exemples conservent leurs octets exacts. Les informations d’installation et de compatibilité sont mises à jour en anglais et en français.
La vérification de compatibilité avec le candidat local du core 0.6 réussit 285 tests et 654 assertions sur chacune des versions PHP 8.3, 8.4 et 8.5. PHPStan niveau 8, formatage, validation Composer stricte, exigences de plateforme du lock et contrôle des avis de sécurité réussissent.
v0.1.6
English is now the default for the README, module guides and complete release history. Full French versions are available through reciprocal language links, including security, example assets and fixture documentation.
Explanatory example comments are in English; executable tokens, output data, original binaries and the PHP API are unchanged. Validation locks use published roukmoute/pdf:0.5.4; other dependency versions and commits remain unchanged.
Validation: Composer strict metadata, platform requirements, locked advisory audit, tests, static analysis and formatting on PHP 8.3, 8.4 and 8.5; independent module fixture/example checks with qpdf and pypdf; local Markdown links and executable snippet parity.
v0.1.5
pdf-reader 0.1.5 is available through Packagist. A consumer now installs it with composer require pdftoolkit/pdf-reader:^0.1; the core is resolved automatically from the default Composer repositories.
Composer metadata links to the centralized module documentation. The development lock selects the published core 0.5.3 (74a03e821cfa1e9c78a2f86ade7a2bc26cfa05b8) while keeping all other locked tool versions. The PHP API, mechanisms and limits are unchanged.
Validation: Composer strict manifest, platform requirements and locked advisory audit; PHPUnit, PHPStan and coding style on PHP 8.3, 8.4 and 8.5; the repository's independent PDF checks. Published-source installation is verified through Packagist without VCS or path repositories.
v0.1.4
Publication de documentation pour pdftoolkit/pdf-reader.
- La documentation commune est publiée à la racine.
- La documentation du module lecteur possède une entrée stable.
- Les guides communs, l'outillage et la publication du site appartiennent à PDFToolkit/pdftoolkit.github.io. Les guides des modules restent près du code et le site les construit depuis leurs versions publiées et leurs commits exacts.
- Le README reflète la contrainte existante
roukmoute/pdf:^0.2 || ^0.3 || ^0.4 || ^0.5.
L'API, les mécanismes du module, les dépendances et leurs versions verrouillées restent inchangés.
Validation : Composer strict, installation, exigences de plateforme, audit verrouillé, tests, analyse statique et formatage réussis. Le workflow Quality a réussi sur PHP 8.3, 8.4 et 8.5 pour le commit 866ae76621cd0ddea360f4121eb92767032b2233, avec les validations PDF indépendantes du dépôt. Les liens Markdown relatifs et git diff --check ont aussi été vérifiés.