MDPDFusion es una herramienta versátil que permite a los usuarios convertir archivos Markdown (.md) a PDF de manera sencilla y eficiente, ya sea a través de una interfaz web, línea de comandos o integración con el sistema operativo.
- Múltiples formas de uso:
- Interfaz web intuitiva construida con Streamlit
- Herramienta de línea de comandos (CLI)
- Integración con el menú contextual del sistema operativo (Windows y macOS)
- Arrastrar y soltar archivos para conversión rápida
- Conversión de alta calidad:
- Preservación fiel del formato Markdown (negritas, cursivas, listas, etc.)
- Soporte para tablas con formato visual adecuado
- Bloques de código con resaltado de sintaxis
- Imágenes con ajuste automático de tamaño
- Enlaces internos funcionales entre secciones del documento
- Diagramas de flujo en lenguaje Mermaid convertidos a imágenes
- Diagramas ASCII con preservación exacta del formato
- Flexibilidad:
- Soporte para la carga de múltiples archivos .md
- Conversión rápida y eficiente
- Opciones de personalización de salida
- Python 3.10+
- Streamlit
- Markdown
- PyPandoc
- ReportLab
- Abre una terminal (CMD o PowerShell)
- Navega hasta la carpeta del proyecto:
cd ruta\a\MDPDFusion - Crea un entorno virtual:
python -m venv venv - Activa el entorno virtual:
venv\Scripts\activate - Actualiza pip e instala las dependencias:
python -m pip install --upgrade pip pip install -r requirements.txt
- Abre una terminal
- Navega hasta la carpeta del proyecto:
cd ruta/a/MDPDFusion - Crea un entorno virtual:
python3 -m venv venv - Activa el entorno virtual:
source venv/bin/activate - Actualiza pip e instala las dependencias:
python -m pip install --upgrade pip pip install -r requirements.txt
- Descarga el archivo ejecutable desde la sección de Releases
- Ejecuta el archivo
MDPDFusion.exe - ¡Listo! Puedes arrastrar archivos .md sobre la aplicación o usar el botón "Añadir archivos"
-
Clona este repositorio:
git clone https://github.com/bladealex9848/MDPDFusion.git cd MDPDFusion -
Sigue los pasos de configuración del entorno virtual según tu sistema operativo.
-
Instala el paquete en modo desarrollo:
pip install -e .
- Si instalaste el ejecutable, simplemente ábrelo haciendo doble clic en
MDPDFusion.exe - Si instalaste desde el código fuente, ejecuta:
python mdpdfusion-gui.py - Usa el botón "Añadir archivos" o arrastra archivos .md sobre la ventana
- Selecciona el directorio de salida y haz clic en "Convertir a PDF"
-
Asegúrate de que el entorno virtual esté activado.
-
Ejecuta la aplicación:
python mdpdfusion-web.pyo
streamlit run src/mdpdfusion/web.py -
Abre tu navegador y ve a
http://localhost:8501 -
Sube tus archivos .md usando el botón de carga de archivos
-
Haz clic en los botones de descarga para obtener tus archivos PDF convertidos
El CLI permite convertir archivos Markdown desde la terminal:
# Convertir un archivo
python mdpdfusion-cli.py archivo.md
# Convertir múltiples archivos
python mdpdfusion-cli.py archivo1.md archivo2.md
# Especificar directorio de salida
python mdpdfusion-cli.py -o directorio_salida archivo.md
# Mostrar información detallada
python mdpdfusion-cli.py -v archivo.md- Si usas el ejecutable, simplemente arrastra uno o más archivos .md sobre
MDPDFusion.exeo sobreArrastrar_MD_Aqui.baten la carpeta de instalación - Si usas la versión de código fuente, arrastra los archivos sobre
MDPDFusion.bat - Los archivos PDF se generarán en el mismo directorio que los archivos .md originales
- Ejecuta
instalar_menu_contextual.batcomo administrador (clic derecho > Ejecutar como administrador) - Ahora puedes hacer clic derecho en cualquier archivo .md y seleccionar "Convertir a PDF con MDPDFusion"
- Para desinstalar, ejecuta
desinstalar_menu_contextual.batcomo administrador
- Ejecuta
instalar_servicio_mac.command(clic derecho > Abrir) - Ahora puedes hacer clic derecho en cualquier archivo .md, ir a Servicios y seleccionar "Convertir a PDF con MDPDFusion"
MDPDFusion soporta enlaces internos entre secciones del documento:
## Mi Sección
Contenido...
[Enlace a la sección](#mi-sección)Los enlaces internos se convierten automáticamente en enlaces funcionales en el PDF generado.
MDPDFusion soporta diagramas de flujo escritos en lenguaje Mermaid:
```mermaid
flowchart TD
A[Inicio] --> B{Decisión}
B -->|Sí| C[Proceso 1]
B -->|No| D[Proceso 2]
C --> E[Fin]
D --> E
Los diagramas Mermaid se convierten automáticamente en imágenes en el PDF generado. Esta funcionalidad requiere conexión a Internet ya que utiliza la API de Mermaid.ink para generar las imágenes.
### Diagramas ASCII
MDPDFusion soporta diagramas creados con caracteres ASCII:
```markdown
┌───────────────────────────────────────────────────────────┐ │ SISTEMA (FRONTEND) │ └───────────┬─────────────────┬─────────────────┬───────────┘ │ │ │ ┌───────────▼─────┐ ┌───────▼────────┐ ┌────▼──────────┐ │ PORTAL │ │ PORTAL │ │ PORTAL │ │ USUARIOS │ │ ADMINISTRADOR │ │ REPORTES │ └───────────┬─────┘ └───────┬────────┘ └────┬──────────┘ │ │ │ ┌───────────▼─────────────────▼─────────────────▼───────────┐ │ BACKEND API │ └────────────────────────────┬────────────────────────────┘ │ ┌──────────▼─────────┐ │ BASE DE DATOS │ └────────────────────┘
Los diagramas ASCII se detectan automáticamente y se preserva su formato exacto en el PDF generado, manteniendo todos los espacios y caracteres especiales.
Si encuentras problemas con enlaces internos, MDPDFusion intentará recuperarse automáticamente:
- Verifica que los enlaces internos apunten a secciones que existen en el documento
- Asegúrate de que los IDs de ancla sean válidos (solo letras minúsculas, números, guiones y guiones bajos)
- Revisa los mensajes de error para identificar enlaces problemáticos
Para obtener información detallada sobre la integración con el sistema operativo, consulta el archivo INTEGRACION.md.
MDPDFusion/
├── assets/ # Recursos gráficos (logo, iconos)
├── build/ # Archivos generados durante la compilación
├── dist/ # Ejecutables y distribuciones
├── docs/ # Documentación
│ ├── images/ # Imágenes para la documentación
│ └── examples/ # Ejemplos de uso
├── reports/ # Informes de pruebas y cobertura
├── src/ # Código fuente
│ └── mdpdfusion/ # Paquete principal
│ ├── __init__.py # Inicialización del paquete
│ ├── core.py # Funcionalidad principal
│ ├── formatters.py # Procesamiento de formato Markdown
│ ├── converters.py # Conversores (ReportLab, Pandoc)
│ ├── cli.py # Interfaz de línea de comandos
│ ├── gui.py # Interfaz gráfica (PyQt5)
│ └── web.py # Interfaz web (Streamlit)
├── tests/ # Pruebas
│ ├── unit/ # Pruebas unitarias
│ ├── integration/ # Pruebas de integración
│ └── fixtures/ # Archivos de prueba
├── .gitignore # Archivos ignorados por Git
├── CHANGELOG.md # Registro de cambios
├── INTEGRACION.md # Guía de integración con el sistema
├── LICENSE # Licencia del proyecto
├── README.md # Este archivo
├── build_exe.py # Script para generar ejecutable
├── mdpdfusion-cli.py # Punto de entrada para CLI
├── mdpdfusion-gui.py # Punto de entrada para GUI
├── mdpdfusion-web.py # Punto de entrada para web
├── requirements.txt # Dependencias del proyecto
├── run_tests.py # Script para ejecutar pruebas
└── setup.py # Configuración de instalación
MDPDFusion incluye un conjunto completo de pruebas unitarias y de integración:
# Ejecutar todas las pruebas
python run_tests.py
# Ejecutar solo pruebas unitarias
python run_tests.py --unit
# Ejecutar solo pruebas de integración
python run_tests.py --integration
# Generar informe de cobertura
python run_tests.py --coverage
# Generar informe HTML
python run_tests.py --htmlPara generar un ejecutable (.exe en Windows):
python build_exe.pyEl ejecutable se generará en la carpeta dist/.
Las contribuciones son bienvenidas. Por favor, sigue estos pasos:
- Haz un fork del repositorio
- Crea una rama para tu característica (
git checkout -b feature/amazing-feature) - Haz commit de tus cambios (
git commit -m 'Add some amazing feature') - Ejecuta las pruebas para asegurarte de que todo funciona
- Haz push a la rama (
git push origin feature/amazing-feature) - Abre un Pull Request
Este proyecto está bajo la licencia MIT. Ver el archivo LICENSE para más detalles.
