Una herramienta para combinar múltiples archivos HTML en un único PDF con formato consistente y optimizado.
PDF Creator es una utilidad de línea de comandos que toma todos los archivos HTML de una carpeta especificada, los ordena correctamente y los combina en un único archivo PDF. Cada archivo HTML se renderiza con un formato consistente, permitiendo elegir entre orientación vertical (portrait) u horizontal (landscape) y preservando la integridad del contenido.
Esta herramienta es ideal para:
- Crear manuales o documentación a partir de páginas HTML
- Generar informes combinando múltiples fuentes HTML
- Archivar contenido web en formato PDF
- Crear materiales de formación o educativos
- Combina múltiples archivos HTML en un único PDF
- Ordenamiento natural de archivos (ej: sesion1.html, sesion2.html, sesion10.html)
- Preservación del contenido a través de múltiples páginas
- Evita división de tablas, imágenes y encabezados entre páginas
- Permite elegir entre orientación vertical (portrait) u horizontal (landscape)
- Recuerda las últimas 3 carpetas utilizadas
- Funciona en modo interactivo o con argumentos de línea de comandos
- Limpia automáticamente los archivos temporales
- Proporciona mensajes claros sobre el progreso y los errores
- Python 3.12 o superior
- uv - Gestor de paquetes y entornos virtuales
- Dependencias del sistema para WeasyPrint (ver sección de instalación)
- Espacio para archivos de configuración (~/.config/pdf-creator/)
git clone https://github.com/tu-usuario/pdf-creator.git
cd pdf-creatorEn sistemas basados en Debian/Ubuntu (incluido Pop!_OS):
sudo apt-get update
sudo apt-get install libpango-1.0-0 libcairo2 libgdk-pixbuf-2.0-0 libffi-dev shared-mime-infouv venv
source .venv/bin/activate
uv pip install -e .uv run main.py --interactiveEsto te guiará a través de una serie de preguntas para especificar:
- La carpeta que contiene tus archivos HTML (mostrando las últimas 3 carpetas utilizadas)
- El nombre del archivo PDF de salida
- La orientación de página (vertical u horizontal)
uv run main.py --input "/ruta/a/carpeta/html" --output nombre-archivo.pdf [--portrait]Argumentos:
--inputo-i: Ruta a la carpeta que contiene los archivos HTML--outputo-o: Nombre del archivo PDF de salida--portraito-p: (Opcional) Usar orientación vertical en lugar de apaisada--interactive: Activar el modo interactivo
# Crear un PDF en orientación horizontal (predeterminada)
uv run main.py --input "./mis_archivos_html" --output documento.pdf
# Crear un PDF en orientación vertical
uv run main.py --input "./mis_archivos_html" --output documento.pdf --portrait
# Modo interactivo
uv run main.py --interactiveA diferencia de la ordenación alfabética estándar, el ordenamiento natural maneja correctamente archivos con componentes numéricos:
- Ordenación estándar:
sesion1.html, sesion10.html, sesion2.html... - Ordenación natural:
sesion1.html, sesion2.html, ..., sesion10.html...
Esto garantiza que los documentos aparezcan en el PDF en el orden lógico esperado.
La herramienta utiliza estilos CSS avanzados para:
- Evitar que las tablas se dividan entre páginas
- Mantener los encabezados con su contenido asociado
- Evitar la división de imágenes
- Optimizar el diseño de tablas para mayor legibilidad
Las últimas tres carpetas utilizadas se guardan en ~/.config/pdf-creator/history.json.
Para contribuir al desarrollo:
# Instalar dependencias de desarrollo
uv add --dev black
# Formatear código
uv run -m black .El código está organizado en módulos funcionales:
- Funciones de utilidad (ordenamiento natural, búsqueda de archivos)
- Gestión del historial de rutas
- Procesamiento de PDF y renderizado
- Interfaz de línea de comandos
Este proyecto está licenciado bajo la Licencia MIT - ver el archivo LICENSE para más detalles.
- WeasyPrint - La biblioteca que hace posible la conversión de HTML a PDF
- uv - Gestor de paquetes y entornos virtuales para Python