npm

@runfoodapp/template-based-document-generator

0.1.1 • Public • Published

@runfoodapp/template-based-document-generator

Este proyecto permite generar un documento como HTML, como imagen o como POS Commands (en lenguajeS epson tanca star daruma)

Este proyecto está diseñado para ejecutarse dentro de un iframe. Se interactura con el iframe a traves de mensajes.

Formato del mensaje

Se presta la idea de action (redux):

interface Action{
    "type": string,
    "payload": any | null | undefined,
    "source": "@runfoodapp/template-based-document-generator",
    "threadId" : string | undefined
}

Acciones disponibles:

Dirección tipo de acción (type) carga (payload)
Salida READY
Entrada RENDER RenderDocumentPayload
Salida RENDER.COMPLETED RenderDocumentCompletedPayload
Salida RENDER.FAILED Error
Entrada TO_POS_COMMANDS POSCommandsPayload
Salida TO_POS_COMMANDS.COMPLETED Buffer
Salida TO_POS_COMMANDS.FAILED Error
Entrada TO_B64IMG { grayscale?: boolean } | null
Salida TO_B64IMG.COMPLETED Buffer
Salida TO_B64IMG.FAILED Error

tipos de datos:

interface RenderDocumentPayload {
    /** Titulo del documento HTML **/
    title: string

    /** ancho máximo del documento (en `px`) **/
    width: string

    /** Cuando se ejecute window.print() establece la escala de impresión (zoom-in o zoom-out) **/
    htmlPrintScale?: string | number,

    /** Tamaño base de los textos (las demás etiquetas de texto se ajustarán basados en este tamaño base) **/
    fontSize: string

    /** plantilla (compatible con `handlebars`) **/
    content_template: string

    /** Datos a utilizar junto con la plantilla para generar el documento **/
    data: Object
}
interface RenderDocumentCompletedPayload {
    /** texto HTML de plantilla generada **/
    content: string
    
    /** texto HTML del documento completo generado (`document.documentElement.innerHTML`) **/
    html: string
    
    /** ancho total del documento en pixeles (`document.documentElement.offsetWidth`) **/
    width: number
    
    /** alto total del documento en pixeles (`document.documentElement.offsetHeight`) **/
    height: number
}
interface Error {
    message : string,
    name : string,
    code : string | number
}
interface POSCommandsPayload {
    /** Lenguaje de comandos **/
    pos_lang: "epson" | "tanca" | "star" | "daruma"

    /** Si se agrega o no el comando de cortar papel **/
    cut?: boolean

    /** Contiene 2 numeros, el primero es el número de sonidos, y el segundo la duración de cada sonido (en ms) **/
    beep?: [number, number]

    /** Si se debe agregar el comando de abrir cajón de monedas al inicio **/
    cash_drawer?: boolean;
}

FIXME:

[ ] Para que el proyecto sea compatible con es3 necesitas quitar el uso de object-spread (var a = { ...b } ) en la dependencia node-thermal-printer.

[ ] La dependencia node-thermal-printer no tiene mucha sensibilidad a los grises, practicamente los ignora al momento de traducir la imagen. Sin embargo otras librerías procesan correctamente las imagenes (vease: Solución de ESCPOS-ThermalPrinter-Android en JAVA)

Package Sidebar

Install

npm i @runfoodapp/template-based-document-generator

Weekly Downloads

4

Version

0.1.1

License

ISC

Unpacked Size

1.99 MB

Total Files

7

Last publish

Collaborators

  • diegopaguay5