Free4AllHub PDF workbench

Run locally (Python 3): from this extracted folder run
  python3 -m http.server 8000 --bind 127.0.0.1
then open http://127.0.0.1:8000/ in a modern browser.
Web Workers require HTTP(S); opening index.html with file:// is not supported.
No npm install or remote CDN is needed. Keep vendor/ beside worker.js.
The Back to Hub links assume the hosted tools/pdf/ folder; they are not part of
standalone local navigation. Local processing remains local.

Use the two original fictional PDFs, arrange/select/rotate, Build PDF, Download.
Reopen the downloaded PDF in a trusted updated reader and check all pages.
Use Reset before closing if you want to clear this tab's work. No autosave.
Read the limits and unsupported document features in index.html first.

Modify app.js (controller), engine.js (PDF validation/copy), workbench.css and
index.html. worker.js isolates parsing/copying and is terminated on cancellation
or after 30 seconds. The caps bound inputs, not decoded memory usage.
This does not replace a security audit or a full PDF validation service.

Source ZIP has no bundled server or input upload endpoint.
PDF tests: with Node.js and Poppler pdftotext installed, run
  node --test tests/pdf-workbench.test.mjs
The portable test uses the included fixtures. Sample generation is in
scripts/pdf-fixtures.cjs. Both are original MIT code; see LICENSE.txt.
See PROVENANCE.txt, vendor/ third-party notices and vendor/LICENSE.md for pinned third-party pdf-lib 1.17.1.

Verification: desktop Chrome preview, real browser export download and reimport,
independent Poppler/pypdf page/text/rotation checks. No real-user, physical-phone,
Safari/Firefox, screen-reader or measured savings/adoption claim.
