https://github.com/bladealex9848/mdpdfusion
MDPDFusion es una aplicación de Streamlit que permite a los usuarios convertir múltiples archivos Markdown (.md) a PDF de manera sencilla y eficiente.
https://github.com/bladealex9848/mdpdfusion
markdown markdown-converter md mdtopdf pdf python streamlit
Last synced: about 2 months ago
JSON representation
MDPDFusion es una aplicación de Streamlit que permite a los usuarios convertir múltiples archivos Markdown (.md) a PDF de manera sencilla y eficiente.
- Host: GitHub
- URL: https://github.com/bladealex9848/mdpdfusion
- Owner: bladealex9848
- Created: 2024-08-29T22:19:33.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2025-04-30T16:39:31.000Z (about 1 year ago)
- Last Synced: 2025-04-30T17:28:43.513Z (about 1 year ago)
- Topics: markdown, markdown-converter, md, mdtopdf, pdf, python, streamlit
- Language: Python
- Homepage: https://mdpdfusion.streamlit.app/
- Size: 1020 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
Awesome Lists containing this project
README
# MDPDFusion
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.
## Características
- **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
## Requisitos
- Python 3.10+
- Streamlit
- Markdown
- PyPandoc
- ReportLab
## Configuración del entorno virtual
### Windows
1. Abre una terminal (CMD o PowerShell)
2. Navega hasta la carpeta del proyecto:
```
cd ruta\a\MDPDFusion
```
3. Crea un entorno virtual:
```
python -m venv venv
```
4. Activa el entorno virtual:
```
venv\Scripts\activate
```
5. Actualiza pip e instala las dependencias:
```
python -m pip install --upgrade pip
pip install -r requirements.txt
```
### macOS / Linux
1. Abre una terminal
2. Navega hasta la carpeta del proyecto:
```
cd ruta/a/MDPDFusion
```
3. Crea un entorno virtual:
```
python3 -m venv venv
```
4. Activa el entorno virtual:
```
source venv/bin/activate
```
5. Actualiza pip e instala las dependencias:
```
python -m pip install --upgrade pip
pip install -r requirements.txt
```
## Instalación
### Método 1: Ejecutable (Windows)
1. Descarga el archivo ejecutable desde la sección de [Releases](https://github.com/bladealex9848/MDPDFusion/releases)
2. Ejecuta el archivo `MDPDFusion.exe`
3. ¡Listo! Puedes arrastrar archivos .md sobre la aplicación o usar el botón "Añadir archivos"
### Método 2: Desde el código fuente
1. Clona este repositorio:
```
git clone https://github.com/bladealex9848/MDPDFusion.git
cd MDPDFusion
```
2. Sigue los pasos de configuración del entorno virtual según tu sistema operativo.
3. Instala el paquete en modo desarrollo:
```
pip install -e .
```
## Uso
### Aplicación Gráfica (GUI)
1. Si instalaste el ejecutable, simplemente ábrelo haciendo doble clic en `MDPDFusion.exe`
2. Si instalaste desde el código fuente, ejecuta:
```
python mdpdfusion-gui.py
```
3. Usa el botón "Añadir archivos" o arrastra archivos .md sobre la ventana
4. Selecciona el directorio de salida y haz clic en "Convertir a PDF"
### Interfaz Web (Streamlit)
1. Asegúrate de que el entorno virtual esté activado.
2. Ejecuta la aplicación:
```
python mdpdfusion-web.py
```
o
```
streamlit run src/mdpdfusion/web.py
```
3. Abre tu navegador y ve a `http://localhost:8501`
4. Sube tus archivos .md usando el botón de carga de archivos
5. Haz clic en los botones de descarga para obtener tus archivos PDF convertidos
### Línea de Comandos (CLI)
El CLI permite convertir archivos Markdown desde la terminal:
```bash
# 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
```
### Arrastrar y Soltar (Windows)
1. Si usas el ejecutable, simplemente arrastra uno o más archivos .md sobre `MDPDFusion.exe` o sobre `Arrastrar_MD_Aqui.bat` en la carpeta de instalación
2. Si usas la versión de código fuente, arrastra los archivos sobre `MDPDFusion.bat`
3. Los archivos PDF se generarán en el mismo directorio que los archivos .md originales
### Integración con el Menú Contextual
#### Windows
1. Ejecuta `instalar_menu_contextual.bat` como administrador (clic derecho > Ejecutar como administrador)
2. Ahora puedes hacer clic derecho en cualquier archivo .md y seleccionar "Convertir a PDF con MDPDFusion"
3. Para desinstalar, ejecuta `desinstalar_menu_contextual.bat` como administrador
#### macOS
1. Ejecuta `instalar_servicio_mac.command` (clic derecho > Abrir)
2. Ahora puedes hacer clic derecho en cualquier archivo .md, ir a Servicios y seleccionar "Convertir a PDF con MDPDFusion"
## Características Avanzadas
### Enlaces Internos
MDPDFusion soporta enlaces internos entre secciones del documento:
```markdown
## 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.
### Diagramas de Flujo (Mermaid)
MDPDFusion soporta diagramas de flujo escritos en lenguaje Mermaid:
```markdown
```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.
### Manejo de Errores
Si encuentras problemas con enlaces internos, MDPDFusion intentará recuperarse automáticamente:
1. Verifica que los enlaces internos apunten a secciones que existen en el documento
2. Asegúrate de que los IDs de ancla sean válidos (solo letras minúsculas, números, guiones y guiones bajos)
3. Revisa los mensajes de error para identificar enlaces problemáticos
### Personalización
Para obtener información detallada sobre la integración con el sistema operativo, consulta el archivo [INTEGRACION.md](INTEGRACION.md).
## Estructura del Proyecto
```
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
```
## Pruebas
MDPDFusion incluye un conjunto completo de pruebas unitarias y de integración:
### Ejecutar pruebas
```bash
# 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 --html
```
### Generar ejecutable
Para generar un ejecutable (.exe en Windows):
```bash
python build_exe.py
```
El ejecutable se generará en la carpeta `dist/`.
## Contribuir
Las contribuciones son bienvenidas. Por favor, sigue estos pasos:
1. Haz un fork del repositorio
2. Crea una rama para tu característica (`git checkout -b feature/amazing-feature`)
3. Haz commit de tus cambios (`git commit -m 'Add some amazing feature'`)
4. Ejecuta las pruebas para asegurarte de que todo funciona
5. Haz push a la rama (`git push origin feature/amazing-feature`)
6. Abre un Pull Request
## Licencia
Este proyecto está bajo la licencia MIT. Ver el archivo `LICENSE` para más detalles.