Crear PDF de AFIP en NodeJS
Con pocas líneas de código
![avatar](/images/blog/ivan.jpg)
Ivan Muñoz
mar 01, 2024
Javascript
![Crear PDF de AFIP en NodeJS](/images/blog/node.png)
Podemos usar Afip SDK para crear los PDF de comprobantes de AFIP luego de obtener el CAE
Instalación
Lo primero es instalar la librería Afip.js
npm
npm install --save @afipsdk/afip.js
Yarn
yarn add @afipsdk/afip.js
Creamos una instancia de la clase Afip
const Afip = require('@afipsdk/afip.js');
/**
* CUIT vinculado al certificado
*
* Podes usar 20409378472 para desarrollo
* sin necesidad de key o cert
**/
const CUIT = 20409378472;
const afip = new Afip({ CUIT: CUIT });
Creamos el PDF
Para este tutorial podemos optar por crear una factura o un ticket
HTML de la factura
https://gist.github.com/AfipSDK/60604af781826b0d0438042ae807cc91
HTML del ticket
https://gist.github.com/AfipSDK/fb05e5bfd059e9bf7fc6045de426ae7f
Ahora nos queda cambiar las variables en nuestro código.
(async () => {
// Descargamos el HTML de ejemplo (ver mas arriba)
// y lo guardamos como bill.html
const html = require('fs').readFileSync('./bill.html', 'utf8');
// Nombre para el archivo (sin .pdf)
const name = 'PDF de prueba';
// Opciones para el archivo
const options = {
width: 8, // Ancho de pagina en pulgadas. Usar 3.1 para ticket
marginLeft: 0.4, // Margen izquierdo en pulgadas. Usar 0.1 para ticket
marginRight: 0.4, // Margen derecho en pulgadas. Usar 0.1 para ticket
marginTop: 0.4, // Margen superior en pulgadas. Usar 0.1 para ticket
marginBottom: 0.4 // Margen inferior en pulgadas. Usar 0.1 para ticket
};
// Creamos el PDF
const res = await afip.ElectronicBilling.createPDF({
html: html,
file_name: name,
options: options
});
// Mostramos la url del archivo creado
console.log(res.file);
})();
// Los PDFs creados con el SDK duran 24hs.
// Debes descargar el archivo antes de que expire la URL
Ya tenemos el PDF listo para enviarle al cliente.
Lo único que nos queda es pasar a modo producción, para más información de cómo hacerlo pueden dirigirse a la documentación de la librería https://docs.afipsdk.com/