Boosted conversion service — build and source information

Source for the deployed conversion service is offered at /source.tar.gz on its
service host. It includes the service, offline converter, Docker build files,
fixed-command host dispatcher and deployment/test scripts. Secrets, customer
uploads, generated files and credentials are deliberately excluded.

Build the API from service/Dockerfile and the offline converter from
converter/Dockerfile. Exact direct dependencies are in requirements.txt files;
installed transitive dependency versions are in the corresponding lock files.
LibreOffice Writer, Tesseract language packs, librsvg and substitute fonts are
installed from the Debian Bookworm repositories named by the Dockerfiles.

The broker accepts only an HMAC-authenticated, short-lived upload ticket from a
separate website. Copy .env.example to .env and supply a random signing secret
and approved browser origins. The website must use the same secret and ticket
format implemented in service/app.py. It is not a general-purpose public API.

ops/provision.sh is specific to the owner's VPS layout. Review domain, subnet,
paths and systemd units before using it elsewhere. It creates a dedicated
4 GiB / 1.5 CPU slice, RAM-backed temporary storage, the broker and dispatcher.
The broker has an internal-only Docker network. Each job has network=none,
read-only input/root filesystem, a private output directory, a non-root user,
no capabilities and its own memory/CPU/process/time budget. The API has no
Docker socket. Only the fixed host dispatcher can create job containers.

PyMuPDF is used under AGPL-3.0-or-later (no commercial API or paid feature).
Its exact source distribution and matching MuPDF source are included in
vendor-sources. pdf2docx's exact upstream source distribution and license are
also included. pdf2docx is no longer actively maintained by Artifex; the pinned
version is tested here inside the offline container. Other components retain
their respective licenses; see installed distribution license metadata.

Official source projects:
https://github.com/pymupdf/PyMuPDF
https://github.com/ArtifexSoftware/pdf2docx
https://git.libreoffice.org/core
https://github.com/tesseract-ocr/tesseract
https://gitlab.gnome.org/GNOME/librsvg
https://github.com/python-pillow/Pillow
https://github.com/bigcat88/pillow_heif
https://github.com/python-openxml/python-docx
https://github.com/fastapi/fastapi
https://github.com/encode/uvicorn

No converter can promise identical editable layout for every PDF. Digital PDFs
use layout reconstruction; PDFs with scanned pages use editable text/OCR mode.
Check the final file, especially numbers, fonts, columns and page breaks.
