Tkinter / ttk desktop app to compare two PDFs side by side, with extra tabs for PDF utilities, image and file-extension/size workflows, in-app help, and license documents. UI strings and logs support Japanese and English; dark / light / pastel themes are built from JSON under themes/.
- Main — Compare two PDFs, page navigation, canvas overlays, export-oriented actions (see
views/main_tab.py). - PDF operation — PDF-focused tools (
views/pdf_ope_tab.py). - Image / file extension & size (U006) — Image and conversion-style tools (
views/image_ope_tab.py). - Description — Operational notes and links (
views/description.py). - Licenses — Reads
licences_tree.txtandlicences.txtfrom the workspace (views/licenses.py). - PDF rendering via pypdfium2; raster work with Pillow; charts where used via matplotlib.
- User settings persist as JSON (development: under the repo; frozen / .exe: under
%LocalAppData%\pdfDiffChecker\— seeconfigurations/tool_settings.py). - Throttled logging and optional
logs/debug.login development layout. - Tests under
tests/(pytest). Additional diagrams underdocs/(drawio, architecture markdown).
- Python 3.12+
- uv for environments and runs
- Runtime Python packages are declared in
pyproject.toml(e.g. numpy, pillow, pypdfium2, pypdf, pdf2image, matplotlib, tkinterdnd2, reportlab, svglib, typing-extensions). Prefer that file as the source of truth rather than duplicating full lists here.
System packages may be needed for some PDF/raster paths (e.g. Poppler for pdf2image on some setups); adjust per your OS.
-
Install uv (Windows PowerShell example):
irm https://astral.sh/uv/install.ps1 | iex
-
Install dependencies:
uv sync
-
Run the application:
uv run python main.py
The repository includes build_nuitka.ps1, which builds pdfDiffChecker.exe (Nuitka standalone/onefile) under build/nuitka/. The build/ directory is gitignored; distribute binaries via GitHub Releases (or similar), not by committing large .exe files to git.
Example:
.\build_nuitka.ps1 -OneFile- Milestone / task plans:
docs/milestone/,docs/tasks/ - Architecture overview (Mermaid):
docs/architecture.md - License text:
licences.txt,licences_tree.txt
- Comments and docstrings in code: English (project convention).
- Names:
snake_casefunctions,PascalCaseclasses,UPPER_SNAKE_CASEconstants.
See licences.txt for third-party and project license notes.