TreeMap
A free, open-source disk-space visualizer. Squarified treemap, duplicate hunting, disk-full forecasting, and cleanup that only ever moves files to the Trash.
翻譯準備中
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證PDF 與影像工具,永不上傳您的檔案 — Windows 桌面應用程式 + 瀏覽器網頁應用程式,全部在本機處理。
AI 翻譯
PDF and image tools that never upload your files — Windows desktop app + browser web app, both processing everything locally.
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
PDF and image tools that don't upload your files anywhere — merge, split,
compress, organize and convert, running entirely on your own machine.
Try the web app → — no
install, runs in your browser tab.檢視完整 README ↗PDF and image tools that don't upload your files anywhere — merge, split, compress, organize and convert, running entirely on your own machine.
Try the web app → — no install, runs in your browser tab.
The tools that do this well (iLovePDF, SmallPDF, and friends) are websites, so every file you feed them gets uploaded to someone else's server. That's fine for a holiday photo. It's not fine for an Aadhaar card, a PAN card, a signed contract, or anything else you'd rather not hand to a stranger's backend. iLoathePDF does the same jobs with the same quality of interface, without the upload — as a Windows desktop app with zero networking code, and as a website that processes files client-side and never sends them anywhere.
| Desktop app | Web app | |
|---|---|---|
| Install | Windows installer | None — open the link |
| Engine | Native Rust + Python + Ghostscript | pdf-lib / pdf.js, in your browser |
| File size limits | Disk-bound | ~200 MB (browser memory) |
| Batch / whole folders | Yes | No |
| Networking code | None at all — cannot phone home | None — verify in DevTools → Network |
| Compress quality | Full (Ghostscript) | Preview (rasterizes pages, no selectable text yet) |
| HEIC → JPG | Yes | Preview badge (decoder not wired up yet) |
| PDF to Excel | Yes | No — no client-side library extracts tables well enough |
Both share the same rule: your files never leave the machine they're opened on. Pick whichever fits — there's no reason to pick only one.
| Tool | What it does |
|---|---|
| Merge PDF | Combine PDFs in the order you choose, with page ranges per file |
| Split PDF | Cut into ranges, chop every N pages, extract or delete a selection |
| Organize pages | Reorder, rotate and drop pages on a page canvas |
| Sign & Fill | Draw or upload a signature, then add text, dates and initials on the page |
| Protect & Unlock PDF | Add or remove a password that's required to open the file |
| Watermark, Page Numbers & Stamp | Add a repeating watermark, sequential page numbers, or a fixed stamp to every page |
| Redact PDF | Black out sensitive text, photos or signatures — visually or for good |
| OCR → Searchable PDF | Add an invisible, searchable text layer to a scanned PDF |
| PDF to Excel | Extract tables into a real, editable spreadsheet — desktop only |
| Compress PDF | Lossless, Balanced or Strong, with the size trade-off shown |
| PDF to images | Render pages to PNG or JPG at a chosen DPI |
| Images to PDF | Scans and photos into one PDF, one image per page |
| Convert images | PNG, JPG and WebP any direction — and HEIC off an iPhone |
On the web app, Compress and the HEIC direction of Convert Images carry a visible Preview badge: real files go in and real processing happens, but the output isn't yet full quality — see the table above. PDF to Excel is desktop only — no client-side library extracts tables well enough to ship on the web, so it shows there as a disabled card pointing to the download. Every other tool is fully live in both the desktop app and the browser.
Four fixed, curated multi-step chains over the tools above — drop a file, pick a recipe, get the final result, with no per-step configuration: Merge → Compress, Scan to Searchable PDF (Images to PDF → OCR → Compress), Flatten PDF (PDF to Images → Images to PDF), and Merge → Extract Tables (desktop only, since it ends in PDF to Excel). Recipes aren't a general pipeline builder and aren't counted among the thirteen tools above — they're compositions of existing tools, reusing each one's own default settings.
Desktop:
React UI ──tauri invoke──▶ Rust core ──JSON lines over stdio──▶ Python engine
▲ │ │
└───── job://progress ───────┘◀────── progress / result events ───────┘
Web:
React UI ──File API──▶ in-memory bytes ──pdf-lib / pdf.js──▶ Blob ──▶ download
Design decisions and the reasoning behind them live in each app's own
SPECS.md; the write-up of how the web app itself was designed and built is
in docs/superpowers/specs and
docs/superpowers/plans.
iLoathePDF/
├── apps/
│ ├── desktop/ the Windows app — see apps/desktop/README.md
│ └── web/ the website — see apps/web
└── docs/ design specs and implementation plans
npm install # installs both apps/desktop and apps/web (npm workspaces)
Then see each app's own README for how to run and build it:
apps/desktop/README.md — requires Node 22,
Python 3.11, Rust with the MSVC toolchain, and Ghostscript.
apps/web — npm run dev --workspace=apps/web and open the
printed local URL. The OCR tool needs its tesseract.js worker, core (WASM)
and English language files vendored locally under apps/web/public/tesseract/
(gitignored, not committed — the app never fetches them from a CDN at
runtime, matching its no-network guarantee). After npm install, copy them
in:
mkdir -p apps/web/public/tesseract/core apps/web/public/tesseract/lang
cp node_modules/tesseract.js/dist/worker.min.js apps/web/public/tesseract/
cp node_modules/tesseract.js-core/tesseract-core-simd-lstm.{js,wasm,wasm.js} node_modules/tesseract.js-core/tesseract-core-relaxedsimd-lstm.{js,wasm,wasm.js} node_modules/tesseract.js-core/tesseract-core-lstm.{js,wasm,wasm.js} apps/web/public/tesseract/core/
gzip -k -c vendor/tesseract/tessdata/eng.traineddata > apps/web/public/tesseract/lang/eng.traineddata.gz
All three LSTM builds are needed: corePath is a directory, and
tesseract.js feature-detects which one to load at runtime (only the
-lstm variants, since this tool always uses OEM LSTM_ONLY) — relaxed-SIMD
for a browser that supports it (current Chrome), plain SIMD for one that
doesn't, and the plain tesseract-core-lstm.* build (no SIMD at all) for a
browser with no WASM SIMD support whatsoever (older Safari/Firefox, or SIMD
disabled by policy). Missing any one of the three 404s for exactly the
browsers that would have picked it. Keep tesseract.js-core's explicit
version in apps/web/package.json in sync with whatever tesseract.js
itself depends on (check
node_modules/tesseract.js/package.json's own tesseract.js-core range)
so this isn't vendoring a different, possibly incomplete build than the
one npm actually resolves.
(The last line reuses the same eng.traineddata the desktop app vendors —
see apps/desktop/HANDOVER.md. If that file isn't present yet, source
eng.traineddata from the Tesseract project's own tessdata release
instead and gzip it the same way.)
main is built through pull requests, and CI has to pass:
git switch -c my-change
git push -u origin my-change
gh pr create --fill
Direct pushes to main are blocked by a local hook rather than GitHub's
branch protection (which needs a paid plan or a public repo to configure —
this repo is public, but the hook is kept as a belt-and-suspenders):
git config core.hooksPath .githooks
Code in this repository is MIT licensed.
That covers the code iLoathePDF's own authors wrote — it does not relicense the third-party pieces the desktop app bundles into its installer, which keep their own terms regardless of this repo's license:
apps/desktop/SPECS.md
before redistributing a compiled installer.The web app's dependencies (pdf-lib, pdf.js, React, etc.) are all
permissively licensed (MIT/Apache-2.0) and impose no extra obligations.