{"id":48357640,"url":"https://github.com/tonicanada/sii_chile_xml_to_pdf","last_synced_at":"2026-04-05T11:34:10.811Z","repository":{"id":41250769,"uuid":"341310802","full_name":"tonicanada/sii_chile_xml_to_pdf","owner":"tonicanada","description":"Conversor de XML DTE del SII (Chile) a PDF con CLI y nombrado automático de archivos.","archived":false,"fork":false,"pushed_at":"2025-09-10T15:30:06.000Z","size":2367,"stargazers_count":15,"open_issues_count":1,"forks_count":20,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-09-10T17:42:35.829Z","etag":null,"topics":["chile","dte","factura-electronica","python","python3","sii"],"latest_commit_sha":null,"homepage":"https://antoniocanada.com/","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/tonicanada.png","metadata":{"files":{"readme":"README.md","changelog":null,"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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-02-22T19:18:23.000Z","updated_at":"2025-09-10T15:30:09.000Z","dependencies_parsed_at":"2025-09-10T15:28:00.591Z","dependency_job_id":"080c4220-7347-4abb-a91e-2ccc00109f8e","html_url":"https://github.com/tonicanada/sii_chile_xml_to_pdf","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/tonicanada/sii_chile_xml_to_pdf","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tonicanada%2Fsii_chile_xml_to_pdf","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tonicanada%2Fsii_chile_xml_to_pdf/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tonicanada%2Fsii_chile_xml_to_pdf/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tonicanada%2Fsii_chile_xml_to_pdf/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tonicanada","download_url":"https://codeload.github.com/tonicanada/sii_chile_xml_to_pdf/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tonicanada%2Fsii_chile_xml_to_pdf/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31434624,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T08:13:15.228Z","status":"ssl_error","status_checked_at":"2026-04-05T08:13:11.839Z","response_time":75,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["chile","dte","factura-electronica","python","python3","sii"],"created_at":"2026-04-05T11:34:10.677Z","updated_at":"2026-04-05T11:34:10.774Z","avatar_url":"https://github.com/tonicanada.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🇨🇱 sii_chile_xml_to_pdf\n\n[![Python](https://img.shields.io/badge/python-3.9%2B-blue)](https://www.python.org/)\n[![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)\n\nConvierte documentos electrónicos XML del **SII (Servicio de Impuestos Internos, Chile)** a **PDF** de manera rápida y automática.  \nCompatible con **facturas, guías de despacho, notas de crédito, notas de débito, boletas y más**.\n\n---\n\n## ✨ Características\n\n- 📄 Conversión **XML → PDF** con plantillas HTML/CSS.\n- 📊 Exportación de datos estructurados a **Excel** (resumen de facturas).\n- 📂 Procesa **un archivo** o **carpetas completas** de XML.\n- 🖋️ Genera timbre **PDF417** en los documentos.\n- 🗂️ **Nombrado inteligente de PDFs** usando datos del XML (`fecha_tipo_razonSocial_folio.pdf`).\n- ⚡ Instalación como **paquete Python (CLI)** o despliegue como **microservicio Docker**.\n- 📦 Nuevo endpoint `render-zip`: permite subir un **ZIP con XMLs** y un **email de destino**. El servicio procesa todos los XML, genera los PDFs y los envía al correo especificado.\n\n---\n\n## 🚀 Instalación como Paquete Python\n\nClona el repositorio y entra en la carpeta:\n\n```bash\ngit clone https://github.com/tuusuario/sii_chile_xml_to_pdf.git\ncd sii_chile_xml_to_pdf\n```\n\nCrea y activa un entorno virtual:\n\n```bash\npython -m venv venv\nsource venv/bin/activate   # Linux / macOS\nvenv\\Scripts\\activate    # Windows\n```\n\nInstala en modo editable:\n\n```bash\npip install -e .\n```\n\n---\n\n## 🔧 Uso de la CLI\n\nDespués de instalar, dispones del comando `sii-xml-pdf`.\n\n### 1) Convertir un XML a PDF\n```bash\nsii-xml-pdf convert examples/input/T33_factura_ejemplo_1.xml -o examples/output/\n```\n\n### 2) Convertir una carpeta completa de XML\n```bash\nsii-xml-pdf convert-folder examples/input -o examples/output/pdf\n```\n\n### 3) Generar un Excel con resumen de facturas\n```bash\nsii-xml-pdf extract-excel examples/input -o examples/output/listado.xlsx\n```\n\n👉 Los PDFs se generan en `output/pdf/` y el Excel en `output/`.\n\n---\n\n## 🐳 Uso como Microservicio con Docker\n\nEste proyecto también puede correr como **microservicio REST** (FastAPI + Uvicorn).\n\n### 1. Configuración de variables de entorno\n\nCopia el archivo de ejemplo y ajusta tus valores:\n\n```bash\ncp .env.example .env\n```\n\n`.env.example`:\n\n```env\nAPI_TOKEN=supersecreto\nPORT=8080\nHOST_PORT=9000\n\n# Configuración email\nSMTP_USER=usuario@dominio.com\nSMTP_PASS=contraseña_de_aplicacion\nSMTP_FROM=usuario@dominio.com\nSMTP_HOST=smtp.dominio.com\nSMTP_PORT=587\n\n# Usas STARTTLS (587)\nMAIL_STARTTLS=True\nMAIL_SSL_TLS=False\n```\n\n### 2. Levantar con Docker Compose\n\nEl repositorio incluye dos configuraciones:\n\n- `docker-compose.dev.yml` → entorno de desarrollo (hot-reload con Uvicorn, volumen montado).  \n- `docker-compose.yml` → entorno de producción (Gunicorn + UvicornWorker, healthchecks, logs, etc.).  \n\nEjemplo desarrollo:\n\n```bash\ndocker compose -f docker-compose.dev.yml up --build -d\n```\n\nEjemplo producción:\n\n```bash\ndocker compose -f docker-compose.yml up -d\n```\n\nEl servicio quedará disponible en:\n\n```\nhttp://localhost:9000\n```\n\n### 3. Endpoints disponibles\n\n- **Salud del servicio**\n  ```bash\n  curl http://localhost:9000/healthz\n  ```\n  Respuesta:\n  ```json\n  {\"status\": \"ok\"}\n  ```\n\n- **Conversión XML → PDF**\n  ```bash\n  curl -X POST \"http://localhost:9000/render\"        -H \"Authorization: Bearer supersecreto\"        -F \"file=@examples/input/T33_factura_ejemplo_1.xml\"        -o salida.pdf\n  ```\n\n- **Conversión ZIP de XML y envío por correo**\n  ```bash\n  curl -X POST \"http://localhost:9000/render-zip\"        -H \"Authorization: Bearer supersecreto\"        -F \"email=usuario@correo.com\"        -F \"file=@examples/input/facturas.zip\"\n  ```\n  El servicio procesa el ZIP, genera PDFs y los envía al email indicado.\n\n### 4. Autenticación por Token\n\nEl microservicio requiere un token en cada petición:\n\n- Se define en `.env` (`API_TOKEN`).  \n- Se envía en las cabeceras HTTP:\n  ```\n  Authorization: Bearer \u003ctoken\u003e\n  ```\n- Para generar un token seguro:\n  ```bash\n  openssl rand -hex 32\n  ```\n- Si necesitas rotarlo: generas uno nuevo, actualizas `.env` y reinicias el servicio (`docker compose up -d`).\n\n---\n\n## 📂 Estructura del proyecto\n\n```\nsii_chile_xml_to_pdf/\n├── examples/         # XML y resultados de ejemplo\n│   ├── input/        # Archivos XML de entrada\n│   └── output/       # PDFs y Excel generados\n├── src/\n│   ├── sii_xml_pdf/  # Código fuente (parser, renderer, cli)\n│   └── service/      # Microservicio FastAPI\n├── Dockerfile\n├── docker-compose.yml\n├── docker-compose.dev.yml\n├── .env.example\n├── README.md\n└── pyproject.toml\n```\n\n---\n\n## 🔮 Roadmap / TODO\n\n- [ ] Parsear correctamente los **descuentos por ítem**.\n- [ ] Extender soporte a otros tipos de documentos.\n- [ ] Agregar soporte de colas para cargas masivas.\n\n---\n\n## 💡 Ejemplos\n\n### XML de entrada\n```xml\n\u003cDocumento\u003e\n  \u003cEncabezado\u003e\n    \u003cIdDoc\u003e\n      \u003cTipoDTE\u003e33\u003c/TipoDTE\u003e\n      \u003cFolio\u003e1001\u003c/Folio\u003e\n    \u003c/IdDoc\u003e\n    ...\n\u003c/Documento\u003e\n```\n\n### PDF generado\n\nPor ejemplo, a partir de un XML de factura con:\n\n- Fecha: `2025-06-25`\n- Razón social: `Cliente Demo Spa`\n- Folio: `1001`\n\nse genera un PDF con nombre:\n\n```\n20250625 FC Cliente Demo Spa 1001.pdf\n```\n\n![Ejemplo PDF](docs/example_pdf.png)\n\n---\n\n## ⭐ Contribuye\n\nEste proyecto ya alcanzó más de **15 estrellas en versiones anteriores** 🎉.  \n¡Si te resulta útil, no olvides dejar tu ⭐ en GitHub!  \n\nLas contribuciones, PRs y sugerencias son siempre bienvenidas.\n\n---\n\n## 📜 Licencia\n\nDistribuido bajo licencia MIT.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftonicanada%2Fsii_chile_xml_to_pdf","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftonicanada%2Fsii_chile_xml_to_pdf","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftonicanada%2Fsii_chile_xml_to_pdf/lists"}