Giter Club home page Giter Club logo

client-node's Introduction

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();
  
  // Escribiendo el buffer del PDF a un archivo
  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.

client-node's People

Contributors

danioso avatar trf-aosorio avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.