UNPKG

@ocelotlstudio/cfdi-pdf

Version:
43 lines (40 loc) 1.49 kB
import pdfMake from 'pdfmake/build/pdfmake'; import pdfFonts from 'pdfmake/build/vfs_fonts'; import { generatePdfContent, Options } from './builder/generateContent'; import { dataToCfdi } from './parser/dataToCfdi'; import { parseXml } from './parser/xmlToData'; import { toCurrency } from './utils/toCurrency'; pdfMake.vfs = pdfFonts.pdfMake.vfs; /** * CfdiPdf namespace */ export namespace CfdiPdf { /** * Function to get entire number to currency actually only spanish mexico * @param {number} number * @param {string=} moneda * @returns {Promise<string>} a promise of string currency */ export const numberToCurrency = toCurrency; /** * Function to get pdf from valid xml cfdi string * @param {string} xml * @param {Options=} options * @returns {Promise<string>} a pdf in base64 string */ export const generatePdf = (xml: string, options: Options = {}): Promise<string> => { return new Promise<string>(async (resolve, reject) => { try { const xmlData = await parseXml(xml); const cfdiData = await dataToCfdi(xmlData); const content = await generatePdfContent(cfdiData, options); const pdfDocGenerator = pdfMake.createPdf(content); pdfDocGenerator.getBase64((data) => { resolve(data); }); } catch (e) { reject(e); } }); }; }