OPTK — an offline-first PDF merge / split / preview tool for Web, Windows, and Linux.
English | 简体中文 | 日本語 | Español | Français | Deutsch | Português | Русский
Offline PDF Toolkit is built for one job: handling common PDF tasks locally without turning a simple workflow into a cloud service, a heavy installer requirement, or a fragile online dependency.
The current public baseline is centered on:
- 100% offline local workflows for Web, Windows, and Linux desktop
- a separate Linux LAN delivery mode for same-network browser access
- flexible merge and split flows that can be combined freely for practical PDF cleanup work
- source preview vs edited-result preview separation
- page-level edit mode for single-page delete / rotate / reorder operations
- one shared operation-page workflow across Web, Windows, Linux LAN, and Linux desktop delivery paths
- You want PDF work to stay local: the Web version, Windows desktop targets, and Linux desktop target are designed for fully offline use without a remote API.
- You need a LAN-access option on Linux: the Linux LAN build is intentionally a same-network delivery mode rather than a fully offline single-machine package.
- You want more than rigid merge-or-split utilities: the toolkit is built around flexible composition, so merge, split, delete, rotate, and reorder can work together instead of being isolated one-shot actions.
- Quick PDF tasks should not require bloated software: open the web version directly or use the packaged desktop targets.
- Preview and editing should feel consistent: import shows the source document first; edited preview shows the post-edit result.
- Open
index.html. - Add one or more PDFs.
- Merge or split as needed.
- Enter edit mode for page-level delete / rotate / reorder operations.
- Click Preview to view the edited result, then Download.
Use one of these release assets:
- Portable / unpacked:
offline-pdf-toolkit-win-portable-v1.0.0.zip - Installer:
offline-pdf-toolkit-win-installer-v1.0.0.exe
Two Linux delivery styles are supported:
- LAN web endpoint: run the LAN package and open
http://<linux-ip>:8787from machines inside the same network - Local desktop client: use the Linux desktop package on the local machine
| Topic | Summary |
|---|---|
| Short name | OPTK |
| Core topics | offline PDF processing, merge/split, local preview, desktop + LAN delivery |
| Web baseline | index.html + assets/ |
| Windows targets | portable/unpacked + installer |
| Linux targets | LAN web endpoint + local desktop client |
| UI languages | 简体中文, English, 日本語, Español, Français, Deutsch, Português, Русский |
| Initial locale | Web uses browser locale; desktop uses host/system locale first |
- Merge multiple PDFs into one result.
- Split PDFs by range with flexible recombination workflows.
- Preview the source document immediately after import.
- Preview the edited result after page operations.
- Use edit mode for single-page delete / rotate / reorder flows.
- Keep the same operation-page logic across Web and packaged desktop targets.
- Keep Linux LAN as a same-network served mode instead of labeling it as a fully offline local-only package.
- Flexible merge + split composition: not only "merge all" or "split by fixed range", but workflows that let you combine merge, split, and page cleanup in one pass.
- Single-page cleanup support: remove unwanted pages one by one instead of only relying on coarse range deletion.
- Page-level rotate and reorder: correct orientation and final sequence before exporting the result.
- Source-first then result-preview workflow: import shows the original PDF first; preview shows the edited output after your changes.
This repository is prepared around these publishable outputs:
offline-pdf-toolkit-web-v1.0.0.zipoffline-pdf-toolkit-win-portable-v1.0.0.zipoffline-pdf-toolkit-win-installer-v1.0.0.exeoffline-pdf-toolkit-linux-lan-v1.0.0.zipoffline-pdf-toolkit-linux-desktop-v1.0.0.zip
This public baseline uses a small set of established open-source components.
See THIRD_PARTY_NOTICES.md for dependency names, upstream repositories, and licenses.
Tech stack
- lightweight HTML/CSS/JavaScript UI
- Web Worker-based PDF processing
- pdf-lib-based lightweight processing runtime
- Electron packaging for desktop delivery
- minimal Node.js LAN server for Linux web delivery
Architecture highlights
- source preview and result preview are separate on purpose
- edit mode is a shared frontend workflow, not a platform-specific branch
- Web remains the fastest validation target
- desktop shells adapt packaging/runtime behavior without forking the editing model
This project is published under UIhoshi and developed through a practical AI-collaboration workflow.
- Project owner / publisher: UIhoshi
- AI engineering collaborators used in the workflow: Codex, Gemini
Git commit authorship and public release ownership should be attributed to UIhoshi, while the repository README and project notes may explicitly describe the multi-agent collaboration process behind the work.
Repository layout
| Path | Purpose |
|---|---|
index.html |
Web entry |
assets/ |
UI, workers, runtime presets, preview/runtime assets |
tools/electron/ |
desktop shell bootstrap and build helpers |
tools/server/ |
Linux LAN web bootstrap |
package.json |
desktop/LAN packaging scripts |
Suggested GitHub topic set for this project:
pdfpdf-toolkitoffline-firstlocal-firstmerge-splitweb-workerelectronwindowslinux
This README structure and release-facing presentation are aligned with the style direction used in:
npm install
npm run build:win:portable
npm run build:win:installer
npm run serve:linux:lan
npm run build:linux:dirNote: On Windows hosts, Linux AppImage packaging may be blocked by host privilege limits. In that case,
build:linux:diris the immediate fallback for validating the Linux desktop bundle.
- The Linux desktop AppImage may require a native Linux build environment for final packaging.
- The project intentionally avoids bloated online integrations in favor of a local workflow.
- Release assets are the publication surface for packaged outputs; intermediate build byproducts are not part of the intended repository sync set.