{"id":27974612,"url":"https://github.com/bladealex9848/mdpdfusion","last_synced_at":"2026-05-08T04:44:13.913Z","repository":{"id":290805849,"uuid":"849598896","full_name":"bladealex9848/MDPDFusion","owner":"bladealex9848","description":"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.","archived":false,"fork":false,"pushed_at":"2025-04-30T16:39:31.000Z","size":1042,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-30T17:28:43.513Z","etag":null,"topics":["markdown","markdown-converter","md","mdtopdf","pdf","python","streamlit"],"latest_commit_sha":null,"homepage":"https://mdpdfusion.streamlit.app/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bladealex9848.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-08-29T22:19:33.000Z","updated_at":"2025-04-30T16:39:35.000Z","dependencies_parsed_at":"2025-04-30T17:28:48.388Z","dependency_job_id":"a375afc1-12e1-4de2-a9be-1ffb31f75460","html_url":"https://github.com/bladealex9848/MDPDFusion","commit_stats":null,"previous_names":["bladealex9848/mdpdfusion"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bladealex9848%2FMDPDFusion","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bladealex9848%2FMDPDFusion/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bladealex9848%2FMDPDFusion/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bladealex9848%2FMDPDFusion/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bladealex9848","download_url":"https://codeload.github.com/bladealex9848/MDPDFusion/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252973778,"owners_count":21834139,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["markdown","markdown-converter","md","mdtopdf","pdf","python","streamlit"],"created_at":"2025-05-08T00:19:00.378Z","updated_at":"2026-05-08T04:44:08.892Z","avatar_url":"https://github.com/bladealex9848.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MDPDFusion\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/logo.png\" alt=\"MDPDFusion Logo\"\u003e\n\u003c/p\u003e\n\nMDPDFusion 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.\n\n## Características\n\n- **Múltiples formas de uso**:\n  - Interfaz web intuitiva construida con Streamlit\n  - Herramienta de línea de comandos (CLI)\n  - Integración con el menú contextual del sistema operativo (Windows y macOS)\n  - Arrastrar y soltar archivos para conversión rápida\n- **Conversión de alta calidad**:\n  - Preservación fiel del formato Markdown (negritas, cursivas, listas, etc.)\n  - Soporte para tablas con formato visual adecuado\n  - Bloques de código con resaltado de sintaxis\n  - Imágenes con ajuste automático de tamaño\n  - Enlaces internos funcionales entre secciones del documento\n  - Diagramas de flujo en lenguaje Mermaid convertidos a imágenes\n  - Diagramas ASCII con preservación exacta del formato\n- **Flexibilidad**:\n  - Soporte para la carga de múltiples archivos .md\n  - Conversión rápida y eficiente\n  - Opciones de personalización de salida\n\n## Requisitos\n\n- Python 3.10+\n- Streamlit\n- Markdown\n- PyPandoc\n- ReportLab\n\n## Configuración del entorno virtual\n\n### Windows\n\n1. Abre una terminal (CMD o PowerShell)\n2. Navega hasta la carpeta del proyecto:\n   ```\n   cd ruta\\a\\MDPDFusion\n   ```\n3. Crea un entorno virtual:\n   ```\n   python -m venv venv\n   ```\n4. Activa el entorno virtual:\n   ```\n   venv\\Scripts\\activate\n   ```\n5. Actualiza pip e instala las dependencias:\n   ```\n   python -m pip install --upgrade pip\n   pip install -r requirements.txt\n   ```\n\n### macOS / Linux\n\n1. Abre una terminal\n2. Navega hasta la carpeta del proyecto:\n   ```\n   cd ruta/a/MDPDFusion\n   ```\n3. Crea un entorno virtual:\n   ```\n   python3 -m venv venv\n   ```\n4. Activa el entorno virtual:\n   ```\n   source venv/bin/activate\n   ```\n5. Actualiza pip e instala las dependencias:\n   ```\n   python -m pip install --upgrade pip\n   pip install -r requirements.txt\n   ```\n\n## Instalación\n\n### Método 1: Ejecutable (Windows)\n\n1. Descarga el archivo ejecutable desde la sección de [Releases](https://github.com/bladealex9848/MDPDFusion/releases)\n2. Ejecuta el archivo `MDPDFusion.exe`\n3. ¡Listo! Puedes arrastrar archivos .md sobre la aplicación o usar el botón \"Añadir archivos\"\n\n### Método 2: Desde el código fuente\n\n1. Clona este repositorio:\n   ```\n   git clone https://github.com/bladealex9848/MDPDFusion.git\n   cd MDPDFusion\n   ```\n\n2. Sigue los pasos de configuración del entorno virtual según tu sistema operativo.\n\n3. Instala el paquete en modo desarrollo:\n   ```\n   pip install -e .\n   ```\n\n## Uso\n\n### Aplicación Gráfica (GUI)\n\n1. Si instalaste el ejecutable, simplemente ábrelo haciendo doble clic en `MDPDFusion.exe`\n2. Si instalaste desde el código fuente, ejecuta:\n   ```\n   python mdpdfusion-gui.py\n   ```\n3. Usa el botón \"Añadir archivos\" o arrastra archivos .md sobre la ventana\n4. Selecciona el directorio de salida y haz clic en \"Convertir a PDF\"\n\n### Interfaz Web (Streamlit)\n\n1. Asegúrate de que el entorno virtual esté activado.\n\n2. Ejecuta la aplicación:\n   ```\n   python mdpdfusion-web.py\n   ```\n   o\n   ```\n   streamlit run src/mdpdfusion/web.py\n   ```\n\n3. Abre tu navegador y ve a `http://localhost:8501`\n\n4. Sube tus archivos .md usando el botón de carga de archivos\n\n5. Haz clic en los botones de descarga para obtener tus archivos PDF convertidos\n\n### Línea de Comandos (CLI)\n\nEl CLI permite convertir archivos Markdown desde la terminal:\n\n```bash\n# Convertir un archivo\npython mdpdfusion-cli.py archivo.md\n\n# Convertir múltiples archivos\npython mdpdfusion-cli.py archivo1.md archivo2.md\n\n# Especificar directorio de salida\npython mdpdfusion-cli.py -o directorio_salida archivo.md\n\n# Mostrar información detallada\npython mdpdfusion-cli.py -v archivo.md\n```\n\n### Arrastrar y Soltar (Windows)\n\n1. 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\n2. Si usas la versión de código fuente, arrastra los archivos sobre `MDPDFusion.bat`\n3. Los archivos PDF se generarán en el mismo directorio que los archivos .md originales\n\n### Integración con el Menú Contextual\n\n#### Windows\n\n1. Ejecuta `instalar_menu_contextual.bat` como administrador (clic derecho \u003e Ejecutar como administrador)\n2. Ahora puedes hacer clic derecho en cualquier archivo .md y seleccionar \"Convertir a PDF con MDPDFusion\"\n3. Para desinstalar, ejecuta `desinstalar_menu_contextual.bat` como administrador\n\n#### macOS\n\n1. Ejecuta `instalar_servicio_mac.command` (clic derecho \u003e Abrir)\n2. Ahora puedes hacer clic derecho en cualquier archivo .md, ir a Servicios y seleccionar \"Convertir a PDF con MDPDFusion\"\n\n## Características Avanzadas\n\n### Enlaces Internos\n\nMDPDFusion soporta enlaces internos entre secciones del documento:\n\n```markdown\n## Mi Sección\n\nContenido...\n\n[Enlace a la sección](#mi-sección)\n```\n\nLos enlaces internos se convierten automáticamente en enlaces funcionales en el PDF generado.\n\n### Diagramas de Flujo (Mermaid)\n\nMDPDFusion soporta diagramas de flujo escritos en lenguaje Mermaid:\n\n```markdown\n```mermaid\nflowchart TD\n    A[Inicio] --\u003e B{Decisión}\n    B --\u003e|Sí| C[Proceso 1]\n    B --\u003e|No| D[Proceso 2]\n    C --\u003e E[Fin]\n    D --\u003e E\n```\n```\n\nLos 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.\n\n### Diagramas ASCII\n\nMDPDFusion soporta diagramas creados con caracteres ASCII:\n\n```markdown\n```\n┌───────────────────────────────────────────────────────────┐\n│                   SISTEMA (FRONTEND)                      │\n└───────────┬─────────────────┬─────────────────┬───────────┘\n            │                 │                 │\n┌───────────▼─────┐   ┌───────▼────────┐   ┌────▼──────────┐\n│ PORTAL         │   │ PORTAL         │   │ PORTAL        │\n│ USUARIOS       │   │ ADMINISTRADOR  │   │ REPORTES      │\n└───────────┬─────┘   └───────┬────────┘   └────┬──────────┘\n            │                 │                 │\n┌───────────▼─────────────────▼─────────────────▼───────────┐\n│                   BACKEND API                             │\n└────────────────────────────┬────────────────────────────┘\n                             │\n                  ┌──────────▼─────────┐\n                  │  BASE DE DATOS     │\n                  └────────────────────┘\n```\n```\n\nLos diagramas ASCII se detectan automáticamente y se preserva su formato exacto en el PDF generado, manteniendo todos los espacios y caracteres especiales.\n\n### Manejo de Errores\n\nSi encuentras problemas con enlaces internos, MDPDFusion intentará recuperarse automáticamente:\n\n1. Verifica que los enlaces internos apunten a secciones que existen en el documento\n2. Asegúrate de que los IDs de ancla sean válidos (solo letras minúsculas, números, guiones y guiones bajos)\n3. Revisa los mensajes de error para identificar enlaces problemáticos\n\n### Personalización\n\nPara obtener información detallada sobre la integración con el sistema operativo, consulta el archivo [INTEGRACION.md](INTEGRACION.md).\n\n## Estructura del Proyecto\n\n```\nMDPDFusion/\n├── assets/                  # Recursos gráficos (logo, iconos)\n├── build/                   # Archivos generados durante la compilación\n├── dist/                    # Ejecutables y distribuciones\n├── docs/                    # Documentación\n│   ├── images/              # Imágenes para la documentación\n│   └── examples/            # Ejemplos de uso\n├── reports/                 # Informes de pruebas y cobertura\n├── src/                     # Código fuente\n│   └── mdpdfusion/          # Paquete principal\n│       ├── __init__.py      # Inicialización del paquete\n│       ├── core.py          # Funcionalidad principal\n│       ├── formatters.py    # Procesamiento de formato Markdown\n│       ├── converters.py    # Conversores (ReportLab, Pandoc)\n│       ├── cli.py           # Interfaz de línea de comandos\n│       ├── gui.py           # Interfaz gráfica (PyQt5)\n│       └── web.py           # Interfaz web (Streamlit)\n├── tests/                   # Pruebas\n│   ├── unit/                # Pruebas unitarias\n│   ├── integration/         # Pruebas de integración\n│   └── fixtures/            # Archivos de prueba\n├── .gitignore               # Archivos ignorados por Git\n├── CHANGELOG.md             # Registro de cambios\n├── INTEGRACION.md           # Guía de integración con el sistema\n├── LICENSE                  # Licencia del proyecto\n├── README.md                # Este archivo\n├── build_exe.py             # Script para generar ejecutable\n├── mdpdfusion-cli.py        # Punto de entrada para CLI\n├── mdpdfusion-gui.py        # Punto de entrada para GUI\n├── mdpdfusion-web.py        # Punto de entrada para web\n├── requirements.txt         # Dependencias del proyecto\n├── run_tests.py             # Script para ejecutar pruebas\n└── setup.py                 # Configuración de instalación\n```\n\n## Pruebas\n\nMDPDFusion incluye un conjunto completo de pruebas unitarias y de integración:\n\n### Ejecutar pruebas\n\n```bash\n# Ejecutar todas las pruebas\npython run_tests.py\n\n# Ejecutar solo pruebas unitarias\npython run_tests.py --unit\n\n# Ejecutar solo pruebas de integración\npython run_tests.py --integration\n\n# Generar informe de cobertura\npython run_tests.py --coverage\n\n# Generar informe HTML\npython run_tests.py --html\n```\n\n### Generar ejecutable\n\nPara generar un ejecutable (.exe en Windows):\n\n```bash\npython build_exe.py\n```\n\nEl ejecutable se generará en la carpeta `dist/`.\n\n## Contribuir\n\nLas contribuciones son bienvenidas. Por favor, sigue estos pasos:\n\n1. Haz un fork del repositorio\n2. Crea una rama para tu característica (`git checkout -b feature/amazing-feature`)\n3. Haz commit de tus cambios (`git commit -m 'Add some amazing feature'`)\n4. Ejecuta las pruebas para asegurarte de que todo funciona\n5. Haz push a la rama (`git push origin feature/amazing-feature`)\n6. Abre un Pull Request\n\n## Licencia\n\nEste proyecto está bajo la licencia MIT. Ver el archivo `LICENSE` para más detalles.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbladealex9848%2Fmdpdfusion","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbladealex9848%2Fmdpdfusion","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbladealex9848%2Fmdpdfusion/lists"}