📄 PDF Tool
Herramientas para tus PDFs — sin subir nada a internet. Como app de escritorio o como comando para agentes de IA y scripts.
Comprime, une, divide, protege y marca tus documentos —y conviértelos desde imágenes— desde tu propio ordenador. Gratis, de código abierto y sin anuncios.
✨ Qué puedes hacer
| Herramienta | Para qué sirve | |
|---|---|---|
| 🗜️ | Comprimir PDF | Reduce el peso de uno o varios PDFs hasta el tamaño en MB que elijas. |
| 🔗 | Unir PDFs | Combina varios documentos en uno solo, en el orden que quieras y con el nombre que elijas. |
| ✂️ | Dividir PDF | Separa un PDF en varios: por rangos de páginas, una página por archivo o cada N páginas. |
| 🖼️ | Imágenes a PDF | Convierte cada imagen (JPG/PNG) en su propio PDF — y si quieres uno solo, únelos después. |
| 🔒 | Proteger PDF | Añade o quita la contraseña de uno o varios PDFs a la vez. |
| 💧 | Marca de agua | Repite un texto en diagonal sobre todas las páginas. |
🔐 Todo ocurre en tu equipo. Tus archivos nunca salen de tu ordenador.
En Comprimir PDF, el modo predeterminado busca la reducción máxima: primero reduce las imágenes y, solo si no basta, convierte páginas en imagen (lo avisa, porque se pierde el texto seleccionable). Con Conservar texto y enlaces nunca lo hace; el icono de ayuda explica la diferencia.
⬇️ Descargar e instalar
Ve a la página de descargas y elige el archivo de tu sistema:
🍎 macOS
- Descarga el archivo
.dmgy ábrelo. - Arrastra PDF Tool a la carpeta Aplicaciones.
- Ábrela desde Aplicaciones. macOS mostrará un aviso y no dejará abrirla aún (es normal: la app no está firmada, pero es segura).
- Ve a Menú Apple () → Ajustes del Sistema → Privacidad y Seguridad.
- Baja hasta la sección Seguridad: verás un mensaje que dice que se bloqueó “PDF Tool”.
Pulsa Abrir de todas formas y confirma con tu contraseña o Touch ID.
Solo hay que hacerlo la primera vez. A partir de ahí se abre con doble clic como cualquier app.
🪟 Windows
- Descarga el instalador (
.exe) y ejecútalo. - Si aparece SmartScreen: Más información → Ejecutar de todas formas.
(El aviso sale porque el instalador no está firmado; es seguro.)
✅ Tus ajustes se guardan fuera de la app, así que se conservan al actualizar. Cuando publique una nueva versión, la app te avisa con un banner.
🤖 Para agentes de IA y la línea de comandos
Las mismas herramientas están disponibles como comando, pensado para agentes (Claude Code, Cursor, Copilot…) y scripts. Todo sigue ocurriendo en tu equipo.
pipx install pdf-tool-cli # solo la CLI (sin la app de escritorio)
pdf-tool list --json # qué herramientas hay y qué aceptan
pdf-tool compress informe.pdf --json # comprimir y obtener el resultado en JSON
pdf-tool merge a.pdf b.pdf --output-name todo
echo "$CLAVE" | pdf-tool protect a.pdf --password-stdin
Cada herramienta tiene su ayuda (pdf-tool compress --help). Códigos de salida:
0 ok · 1 error al procesar · 2 uso inválido · 3 algún archivo del lote falló.
pipx install 'pdf-tool-cli[gui]' instala además la app (comando pdftool).
Plugin para Claude Code
Una skill
le enseña a Claude Code a usar pdf-tool para crear o modificar PDFs en lugar de
escribir scripts: pide permiso antes de instalar la CLI, ejecuta las herramientas
con --json y te explica el resultado. Para instalarla, dentro de Claude Code:
/plugin marketplace add juanMaAV92/pdf-tool
/plugin install pdf-tool@pdf-tool
🤝 Contribuir
¡Las contribuciones son bienvenidas! Puedes abrir un issue con ideas o errores, o mandar un pull request. La arquitectura es modular: añadir una herramienta nueva es crear una carpeta y la app y la CLI la descubren solas. En el roadmap está lo que viene: una skill para que los agentes de IA usen la CLI.
🛠️ Para desarrolladores (montar el proyecto en local)
Requisitos
- Python 3.11+ y Poetry
Arrancar
poetry install --all-extras # incluye Flet (extra [gui]) para la app
poetry run pdftool # abre la app
poetry run pytest # corre los tests
Añadir una herramienta nueva
- Crea
pdftool/tools/<id>/conparams.py,logic.py(función pura + tests),spec.py(registra la herramienta, sin Flet),panel.pyy un__init__.pyvacío. - La app la muestra en la barra lateral y la CLI la ofrece como
pdf-tool <id>, las dos automáticamente.
La lógica (logic.py) no importa Flet y se prueba sin UI; la UI (panel.py)
solo arma controles. Detalles en AGENTS.md.
Publicar una versión (automatizado con GitHub Actions)
git tag vX.Y.Z
git push origin vX.Y.Z
Eso dispara release.yml, que corre los tests, construye macOS (.dmg) y Windows
(instalador Inno Setup) en paralelo, hornea la versión del tag en el build y crea
un GitHub Release en borrador con ambos instaladores. Revísalo y pulsa
Publish release para que las apps instaladas detecten la actualización.
Si los instaladores se construyen bien, publica también el paquete en PyPI
(pdf-tool-cli, por Trusted Publishing y sin tokens). Ese paso espera a que lo
apruebes en Actions (entorno pypi), porque una versión en PyPI no se puede
reemplazar.
Los PRs que cambian la app, el empaquetado o sus dependencias ejecutan además Package smoke: construye e inspecciona el DMG de macOS y compila e instala de forma silenciosa el instalador de Windows. Antes de una release importante, seguir la checklist manual para validar la ventana y los diálogos nativos.
El número de versión es el tag — única fuente de verdad.
Build local (para depurar el empaquetado)
poetry run flet build macos --project pdf-tool --product pdf-tool # -> build/macos/pdf-tool.app
poetry run flet build windows --project pdf-tool --product pdf-tool # -> build/windows/
--project pdf-tool es obligatorio: sin él, flet build toma el nombre del
paquete (pdf-tool-cli) y la app cambia de identidad.
Metadata
Release files for pdf-tool-cli 1.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| pdf_tool_cli-1.1.1.tar.gz | 57.9 kB | With provenance | Details for pdf_tool_cli-1.1.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| pdf_tool_cli-1.1.1-py3-none-any.whl | Python 3 | none | any | Details for pdf_tool_cli-1.1.1-py3-none-any.whl |
Total release size: 135.9 kB
Release files / pdf_tool_cli-1.1.1.tar.gz
| Download URL | pdf_tool_cli-1.1.1.tar.gz |
|---|---|
| Size | 57.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8e5af2f6e9c528afe39e524c5f16c88f4b6600c4f699ee1a864909c26453dd7b
|
|
BLAKE2b-256 checksum How to use checksums |
beca99e9cb8c6ecdaaf4ae19b49cb35c1311fbf8d5660c832451d1a7287cede8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 31, 2026.
Transparency logRelease files / pdf_tool_cli-1.1.1-py3-none-any.whl
| Download URL | pdf_tool_cli-1.1.1-py3-none-any.whl |
|---|---|
| Size | 77.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
67e995f9f73592e07f26d2052ac53cebf14dabd4674663a9f2574c20ff20a3f2
|
|
BLAKE2b-256 checksum How to use checksums |
1858c66a64ed964a0cd55aa5f7de95cf82dda40e25705d66b531591e0ea28f96
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 31, 2026.
Transparency logSecurity for pdf-tool-cli 1.1.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for pdf_tool_cli-1.1.1.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 31, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.