Conversión de CFDI a PDF
- English documentation available here
redocmx
El módulo redocmx
es un cliente de Node.js diseñado para interactuar con la API REST de redoc.mx para convertir CFDIs (Comprobante Fiscal Digital por Internet) a PDFs.
Este cliente facilita el proceso de enviar datos XML y recibir el PDF convertido, junto con los detalles de la transacción y metadatos.
Este paquete incluye definiciones de TypeScript que te permiten integrarlo sin problemas en tus proyectos de TypeScript.
Instalación
Para instalar el módulo, ejecuta:
npm install redocmx --save
o si usas yarn
:
yarn add redocmx
Uso
Primero, importa el módulo y crea una instancia del cliente Redoc.
Puedes pasar opcionalmente tu clave API como un argumento, o el cliente intentará cargarla de la variable de entorno REDOC_API_KEY
.
import Redoc from 'redocmx';
const redoc = new Redoc('tu_clave_api_aquí');
Convirtiendo CFDI a PDF
@redocmx/client
proporciona dos opciones para cargar datos CFDI: desde un archivo o directamente desde una cadena.
Opción 1: Cargar XML desde el Sistema de Archivos
const cfdi = redoc.cfdi.fromFile('./ruta/a/tu/archivo.xml');
Opción 2: Usar una Cadena de Contenido XML
const cfdi = redoc.cfdi.fromString('<cadena_de_contenido_xml_aquí>');
Generando el PDF
Para convertir el CFDI cargado a un PDF:
try {
const pdf = await cfdi.toPdf();
const buffer = pdf.toBuffer();
await fs.writeFile('./ruta/para/guardar/archivo.pdf', buffer);
console.log(`ID de Transacción: ${pdf.getTransactionId()}`);
console.log(`Total de Páginas: ${pdf.getTotalPages()}`);
console.log(`Tiempo Total: ${pdf.getTotalTimeMs()} ms`);
console.log(`Metadatos: ${pdf.getMetadata()}`);
} catch (error) {
console.error("Ocurrió un error durante la conversión:", error);
}
Ejemplos
Referencia API
Redoc
El objeto redoc
es una instancia de Redoc
, creada usando new Redoc(api_key)
.
Método | Descripción |
---|
redoc.cfdi.fromFile(filePath) | Devuelve: Cfdi - Instancia Carga contenido de archivo del sistema para convertir un CFDI a PDF. El archivo debe ser XML válido para un CFDI. Devuelve una instancia de la clase Cfdi, que se puede usar para obtener el PDF. |
redoc.cfdi.fromString(fileContent) | Devuelve: Cfdi - Instancia Usa un CFDI como cadena para convertir el CFDI a PDF. La cadena debe ser XML válido para un CFDI. Devuelve una instancia de la clase Cfdi, que se puede usar para obtener el PDF. |
Cfdi
El objeto cfdi
es una instancia de Cfdi
, creada usando redoc.cfdi.fromFile(rutaDelArchivo)
o redoc.cfdi.fromString(contenidoDelArchivo)
.
Método | Descripción |
---|
cfdi.setAddenda(str) | Parámetros: String Permite el uso de una addenda de redoc para tener control total sobre el diseño del PDF final. |
cfdi.toPdf(opciones) | Parámetros: Object - OpcionesPdf Devuelve: Pdf - Instancia Una instancia de la clase Pdf, que al invocarse, convierte el CFDI a PDF y lo almacena, junto con los datos generados de la solicitud de conversión. |
OpcionesPdf
{
"estilo_pdf": "John"
}
Pdf
El objeto pdf
es una instancia de Pdf
, creado a partir de cfdi.toPdf(opciones)
.
Método | Descripción |
---|
pdf.toBuffer() | Devuelve: Buffer El documento PDF como buffer, listo para almacenarse en el sistema de archivos o para enviarse de vuelta en una solicitud HTTP. |
pdf.getTransactionId() | Devuelve: String - UUID Un ID único para la solicitud de transacción al servicio de redoc. |
pdf.getTotalPages() | Devuelve: Integer El número total de páginas generadas para el archivo PDF. |
pdf.getTotalTimeMs() | Devuelve: Integer Tiempo en milisegundos tomado para convertir el CFDI a PDF. |
pdf.getMetadata() | Devuelve: Object - MetadatosCfdi Información general del CFDI convertido. |
MetadatosCfdi
{
TDB...
}
Contribuciones
¡Las contribuciones son bienvenidas! No dudes en enviarnos una solicitud de extracción o abrir un problema para cualquier error, característica o mejora.
Licencia
Este proyecto está licenciado bajo la Licencia MIT - vea el archivo LICENSE para más detalles.