A full-featured offline PDF toolkit for Linux. Built with privacy in mind - all processing happens locally on your machine.
- High-quality PDF rendering powered by MuPDF
- Multi-tab document viewer
- Full annotation support: highlights, underlines, strikethrough, comments, freetext, shapes, arrows, sequence numbers
- Text selection with context menu (copy, search, annotate)
- Search with highlight and navigation
- Save annotations embedded in PDF or as XFDF
- Print support with annotation options
- Merge: Combine multiple PDFs with drag-and-drop page reordering
- Split: Extract pages, ranges, or create multiple documents
- Rotate: Per-page or batch rotation with visual preview
- Compress: Reduce file size with configurable quality levels
- Images to PDF: JPG, PNG, WEBP, TIFF, BMP with per-image transforms
- PDF to Images: Export pages as PNG, JPG, WEBP, or TIFF at configurable DPI
- Office to PDF: DOCX, XLSX, PPTX, ODT via LibreOffice
- Markdown to PDF: With syntax highlighting and custom styles
- Automatic OCR detection for scanned documents
- Multi-language support (Tesseract)
- Progress indication and batch processing
- Clean Nord-themed interface
- Persistent settings and recent files
- Customizable favorites in sidebar
- Keyboard shortcuts
| Layer | Technology |
|---|---|
| Frontend | Svelte 5 (runes) + Vite + Tailwind CSS |
| Desktop | Tauri 2.x (Rust) |
| PDF Rendering | MuPDF via Rust bindings |
| PDF Processing | PyMuPDF, pikepdf, pypdf |
| OCR | OCRmyPDF + Tesseract |
| Icons | Lucide |
| Theme | Nord |
- Node.js 18+ and npm
- Rust toolchain (for Tauri)
- Python 3.12.x
MuPDF links common dependencies from the system to avoid conflicts with GTK file dialogs.
Arch Linux:
sudo pacman -S --needed pkgconf libjpeg-turbo zlib freetype2 harfbuzzDebian/Ubuntu:
sudo apt-get install -y pkg-config libjpeg62-turbo-dev zlib1g-dev libfreetype6-dev libharfbuzz-devFedora:
sudo dnf install -y pkgconf-pkg-config libjpeg-turbo-devel zlib-devel freetype-devel harfbuzz-devel| Feature | Package |
|---|---|
| Office conversion | libreoffice-fresh |
| PDF compression | ghostscript |
| OCR | tesseract + language packs (e.g., tesseract-data-eng, tesseract-data-spa) |
For better Wayland + KDE/GNOME integration, install XDG Desktop Portal:
- KDE Plasma:
xdg-desktop-portal+xdg-desktop-portal-kde - GNOME:
xdg-desktop-portal+xdg-desktop-portal-gtk
# Clone the repository
git clone https://github.com/vicrodh/Tlacuilo.git
cd Tlacuilo
# Install frontend dependencies
npm install
# Setup Python backend
python3.12 -m venv backend/venv
backend/venv/bin/pip install --upgrade pip
backend/venv/bin/pip install -r backend/requirements.txt# Frontend only (browser)
npm run dev
# Full desktop app
npm run tauri:devnpm run tauri:build- MuPDF - High-performance PDF rendering engine (AGPL-3.0)
- Tauri - Desktop application framework
- Svelte - Frontend framework
- PyMuPDF - Python bindings for MuPDF
- pikepdf - PDF manipulation library
- OCRmyPDF - OCR processing
- Tesseract OCR - OCR engine
- Nord Theme - Color palette
- Lucide Icons - Icon set
- Sumatra PDF - MuPDF-based reader with excellent rendering quality
- Stirling PDF - Comprehensive open-source PDF toolkit
- Cloud Storage Integration: OneDrive, Google Drive, Dropbox, iCloud - import and save files directly to cloud services
We are not accepting pull requests at this time. Please open an issue if you have suggestions.
This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0).
This license is required because Tlacuilo uses MuPDF, which is licensed under AGPL-3.0. Under the terms of AGPL-3.0:
- You may use, modify, and distribute this software
- If you modify and distribute this software, you must release your modifications under AGPL-3.0
- If you run a modified version on a server and let others interact with it, you must make the source code available
See LICENSE for the full license text.