Repository navigation
v0.2.0
PDFToolkit's core now runs on PHP 8.3 and keeps the PDF 1.7 / ISO 32000-1 object model and writer independent of external-format parsers.
- PHP 8.3, 8.4 and 8.5: typed constants, readonly values and the explicit object model are retained. Existing 0.1.0 and 0.1.1 tags keep their PHP 8.5 requirement.
- Optional packages: PDF reading, PNG/JPEG conversion and static TrueType analysis are separately released as
pdftoolkit/pdf-reader,pdftoolkit/pdf-imagesandpdftoolkit/pdf-fonts0.1.0. The core has no production dependency on them. - PDF font and image objects: explicit font programs, descriptors, CID character maps, widths, Identity-H Type0 fonts, CIDToGIDMap and ToUnicode streams; sampled and DCT images with soft masks and explicit color semantics.
- Incremental writing: frozen revisions, explicit replacements, historical reference identities, absolute cross-reference offsets and inherited trailers, including replacements of compressed members.
- Documentation: a shared French reference for the four packages, explained tutorials, generated PDF downloads, rendered previews and an external page-reading example. Module API and source links use the exact commits installed for the build.
- Validation: quality checks and PDF example validation run on PHP 8.3, 8.4 and 8.5, with PHPStan, formatting checks, Composer advisory auditing and independent qpdf/pypdf verification.
This minor release changes the 0.1 API. Converter services now belong to their optional packages; normalized PDF objects stay in the core. The outline root is PDF\Document\OutlineDictionary, the catalog entry is Extensions, and unused catalog aliases and text convenience wrappers have been removed. See the changelog for the complete changes.
Install from GitHub:
composer config repositories.pdf vcs https://github.com/PDFToolkit/pdf
composer require 'roukmoute/pdf:^0.2'Before 1.0, minor releases may change names and signatures; patch releases preserve their minor series' API. Full PDF conformance is not claimed: encryption, signatures, font subsetting, complex-script shaping, external-graph import and linearization remain to be implemented. The coverage document describes these boundaries.