0.1.1 • Published 9 months ago

@runfoodapp/template-based-document-generator v0.1.1

Weekly downloads
-
License
ISC
Repository
-
Last release
9 months ago

@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óntipo de acción (type)carga (payload)
SalidaREADY
EntradaRENDERRenderDocumentPayload
SalidaRENDER.COMPLETEDRenderDocumentCompletedPayload
SalidaRENDER.FAILEDError
EntradaTO_POS_COMMANDSPOSCommandsPayload
SalidaTO_POS_COMMANDS.COMPLETEDBuffer
SalidaTO_POS_COMMANDS.FAILEDError
EntradaTO_B64IMG{ grayscale?: boolean } | null
SalidaTO_B64IMG.COMPLETEDBuffer
SalidaTO_B64IMG.FAILEDError

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)

0.1.1

9 months ago

0.1.0

10 months ago

0.0.2

10 months ago

0.0.1

10 months ago