restruct / docsys-tools
Umbrella package: portable DocSys CLI tool wrappers + system tool paths (GS, convert, soffice)
Fund package maintenance!
Requires
- php: >=8.0
- restruct/dot-static: ^2.0
- restruct/xpdf-static: ^1.0
Requires (Dev)
None
Suggests
- restruct/cpdf-static: Coherent PDF wrappers (CPDF_PATH) — AGPL/commercially licensed, distributed via private repository only
- restruct/wkhtmltopdf-static: wkhtmltopdf 0.12.6 patched-Qt wrappers (WKHTMLTOPDF_PATH) — available on Packagist
Provides
None
Conflicts
None
Replaces
None
README
Maintained by Restruct. If this package saves you time, you can support ongoing maintenance.
Umbrella package that bundles all DocSys CLI tool wrappers and defines system tool paths.
Versions
| Version | Branch | Status | What it is |
|---|---|---|---|
| 2.x | main |
current | Umbrella only. No DocSysTools class: use each sub-package's own resolver |
| 1.x | v1 |
compatibility, maintenance only | 1.0.4+ keeps the 1.0.0 DocSysTools::init_paths() API (deprecated), delegating to the sub-packages |
1.0.1 to 1.0.3 removed the 1.0.0 API in patch releases by accident; 1.0.4 restores it. Moving from 1.x to 2.x: see UPGRADING.md. History: CHANGELOG.md.
Requirements
- PHP 8.2 or higher in practice. This package's own
bootstrap.phpneeds PHP 8.0 (composer.jsonsays>=8.0), butrestruct/dot-static^2.0 requires PHP 8.2 andrestruct/xpdf-static^1.0 requires PHP 8.1. - The system tools below (Ghostscript, ImageMagick/GraphicsMagick, LibreOffice) if you use their constants; they are not bundled.
composer.json is the source of truth for version constraints.
Sub-packages (bundled tools)
| Package | Constant | Tool | Dependency |
|---|---|---|---|
restruct/xpdf-static |
XPDF_BIN_DIR |
xpdf tools (pdftotext, pdfinfo, pdftopng, etc.) | required (Packagist) |
restruct/dot-static |
GRAPHVIZ_DOT_PATH |
Graphviz dot (static Linux binary + Homebrew) | required (Packagist) |
restruct/cpdf-static |
CPDF_PATH |
Coherent PDF v2.8.1 (macOS + Linux, x64 + ARM) | suggested — AGPL/commercial license, private repo only |
restruct/wkhtmltopdf-static |
WKHTMLTOPDF_PATH |
wkhtmltopdf 0.12.6 with patched Qt + Docker | suggested — on Packagist (kept optional: not every consumer needs it) |
Each sub-package has its own bootstrap and PHP wrapper classes. The suggested packages must be required directly by the consuming project (with the appropriate repository entry) — this umbrella only hard-requires what anyone can resolve from Packagist.
System tool paths (this package)
This package's bootstrap.php defines paths for tools that must be installed on the system:
| Constant | Tool | Install |
|---|---|---|
GS_PATH |
Ghostscript | apt install ghostscript |
CONVERT_PATH |
ImageMagick/GraphicsMagick | apt install graphicsmagick-imagemagick-compat |
SOFFICE_PATH |
LibreOffice headless | apt install libreoffice-nogui |
Usage
Each sub-package resolves its binary on first use of its PHP class (for example
Restruct\WkhtmltoPdf\WkhtmltoPdfStatic::getPath() or ::init()), which includes its own
bootstrap; nothing is defined on install. To also define system tool paths:
require_once 'vendor/restruct/docsys-tools/bootstrap.php';
Or override via environment variables:
GS_PATH=/usr/bin/gs CONVERT_PATH=/usr/bin/convert SOFFICE_PATH=/usr/bin/soffice
Migration from v0.x
The monolithic DocSysTools::init_paths() / DocSysTools::init() API is removed.
Each sub-package now handles its own binary resolution independently.
Coming from 1.x: see UPGRADING.md for the full mapping and a before/after example.
Constant changes:
XPDF_BIN_PATH→XPDF_BIN_DIR(from restruct/xpdf-static)PDFINFO_PATH→ useRestruct\Xpdf\Xpdf::getToolPath('pdfinfo')PDFTOPNG_PATH→ useRestruct\Xpdf\Xpdf::getToolPath('pdftopng')GRAPHVIZ_DOT_PATH→ stillGRAPHVIZ_DOT_PATH(from restruct/dot-static)DOT_PATH→ removed, useGRAPHVIZ_DOT_PATH
System tool installation
See previous README for detailed installation instructions for wkhtmltopdf, convert, gs, and soffice.
License
This package (bootstrap.php, docs) is MIT licensed, see LICENSE. The sub-packages it
requires or suggests carry their own licences, including those of the third-party binaries they
bundle: see each package's README (xpdf tools: GPL v2 or v3; Graphviz: Eclipse Public License;
wkhtmltopdf: LGPL-3.0; Coherent PDF: AGPL or commercial).