PDF Tools
Deterministic page-model plans for merge, split, page reorder/rotation and image descriptors; a static site with no real PDF engine integrated in this round.Processed locally
Operations
Merge PDFs (page model)
Concatenates pages in documents-array order without filename sorting or de-duplicating repeated files; emits a 5-page plan and thumbnail order for the "2 pages + 3 pages = 5 pages" acceptance case.
Split by page ranges (page model)
1-based, comma-separated ranges such as 1-2,5; zero, out-of-bounds, descending, overlapping and malformed ranges return readable coded errors and keep the input.
Page reorder & rotation (page model)
Applies an order permutation and per-page rotations to mixed landscape/portrait pages; only pages whose position or angle actually changed are committed, and a no-op has commitCount=0.
PDF → PNG/JPEG descriptors (page model)
Computes per-page filename, MIME, pixel dimensions and orientation from width/height, rotation and DPI; emits descriptors only, with zero raster bytes and no image files.
Real examples and limits
Default product input budget: 50 MiB and 200 pages in total (not an engine capability promise). This round accepts page-model JSON only: real PDF binaries are not parsed, encrypted/password-protected, corrupt and empty files are unsupported, and no PDF/PNG/JPEG file is produced. The result is a verifiable JSON plan; download requires an explicit user click and cancellation never triggers an automatic download. Related sites img/ocr are planned config entries, with no dead links until they are live.
FAQ
Can this site open real PDF files now?
No. A real PDF parsing engine / WASM is not integrated this round (no browser is available for testing). The workspace accepts an injectable page-model JSON and verifies order-preserving merge, page ranges, rotation/reorder and lifecycle semantics with pure functions. Real File/Blob inputs produce a clear error, never a fabricated PDF result.
Are page numbers 0-based or 1-based?
1-based. Zero, out-of-bounds, descending and overlapping ranges are rejected with readable errors. For example, 1-2,5 on a 5-page document yields pages 1, 2 and 5 — three pages.
Are my files uploaded to a server?
No. This is a static site; the ESM business logic runs in your browser. Page models stay in memory for the current run, input text is not persisted by default, and analytics is a no-op when unconfigured.
What about encrypted or password-protected PDFs?
Passwords are currently unsupported. An encrypted input returns a clear PASSWORD_NOT_SUPPORTED error; the page does not crash and no password is guessed. Corrupt and empty files also receive readable errors.
Will cancelling a run download anything automatically?
No. "No auto-download after cancel" is a hard rule: cancellation releases registered Blob URLs and worker handles and blocks both automatic and explicit downloads. Only an explicit user click after a completed export can trigger a download.