Search by

restruct / docsys-tools

micschk

Umbrella package: portable DocSys CLI tool wrappers + system tool paths (GS, convert, soffice)

Package info

github.com/restruct/docsys-tools

pkg:composer/restruct/docsys-tools

Fund package maintenance!

restruct

Statistics

Installs: 393

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 2

2.0.0 2026-09-29 06:42 UTC

This package is auto-updated.

Last update: 2026-09-29 15:49:58 UTC


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.php needs PHP 8.0 (composer.json says >=8.0), but restruct/dot-static ^2.0 requires PHP 8.2 and restruct/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 → use Restruct\Xpdf\Xpdf::getToolPath('pdfinfo')
  • PDFTOPNG_PATH → use Restruct\Xpdf\Xpdf::getToolPath('pdftopng')
  • GRAPHVIZ_DOT_PATH → still GRAPHVIZ_DOT_PATH (from restruct/dot-static)
  • DOT_PATH → removed, use GRAPHVIZ_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).