Documentation
¶
Overview ¶
Procesamiento de plantillas
Funciones para procesar plantillas y convertirlas en esc/pos binario o en PDF
En las plantillas escpos se sustituyen los siguientes comandos entre {} por las correspondientes secuencias de escape esc/pos:
Estilos {whsbuioxlrc}, cada letra es opcional y significan:
- w - doble ancho
- h - doble alto
- s - pequeño
- b - negrita
- u - subrayado
- i - itálica
- o - blanco sobre negro
- x - arriba-abajo
- l - izquierda
- r - derecha
- c - centrado
Control de la impresora:
- {reset}
- {full-cut}
- {partial-cut}
- {form-feed}
Códigos de barras:
- {bc-heigth 162}: altura del código de barras (1-255)
- {bc-modulo 3}: módulo del código de barras (2-6)
- {bc-hri none}: muestra el texto bajo el código de barras (none/above/below/both)
- {code128 123456}: Conmutación automática de las variantes B y C
- {code128a 123456}: Códigos de control, números, mayúsculas y simbolos
- {code128b 123456}: Números, mayúsculas, minúsculas y más simbolos
- {code128c 123456}: Solo números de longitud par
- {itf 123456}: Solo números de longitud par
- {upc-a 123456}: Códigos numéricos para productos (usa)
- {upc-e 123456}: Códigos cortos para productos (usa)
- {ean-13 123456}: Códigos numéricos para productos (eur)
- {ean-8 123456}: Códigos cortos para productos (eur)
- {code39 123456}: Números, mayúsculas y algunos símbolos
- {code93 123456}: Números, mayúsculas y algunos símbolos
- {codabar 123456} (se imprime como code128 en html/pdf)
Códigos QR
- {qr-ecc L}: ECC del código QR (L|M|Q|H)
- {qr-modulo 3}: módulo del código QR (1-16)
- {qr https://devel.horus.es}
Imágenes:
- {logo.png}: fichero en formato png
Se soportan las funciones de formato DATETIME, DATE, TIME y PRICE.
Ejemplo de plantillla en https://github.com/horus-es/go-util/blob/main/plantillas/plantilla.escpos
Funciones para procesar plantillas y convertirlas en HTML, PDF o EMAIL ¶
Las plantillas soportan la sintaxis estándar de GO y además los siguientes attributos tomados de ThymeLeaf:
- th:if="condition" => {{ if condition }} T {{ end }}
- th:each="items" => {{ range items }} T {{ end }}
- th:with="item" => {{ with item }} T {{end}}
- th:remove="all" => elimina el tag
- th:text="content" => reemplaza el contenido del tag
- th:attr="value" => reemplaza el valor del atributo
Se soportan las funciones de formato DATETIME, DATE, TIME, PRICE y BR.
Ejemplo de plantillla en https://github.com/horus-es/go-util/blob/main/plantillas/plantilla.html
Ejemplos de plantillas preparadas para mailing en https://postmarkapp.com/transactional-email-templates
Ejemplos de uso de los atributos de Thymeleaf en https://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html
Index ¶
- Constants
- func C128auto(codigo []byte) (auto []byte)
- func GenerateEscPos(escpos string) (bin []byte, width int, err error)
- func GenerateEscPosPdf(escpos []byte, out string, width int, opciones ...string) error
- func GenerateXhtmlPdf(name, xhtml string, datos any, assets string, ff formato.Fecha, ...) error
- func MergeEscPosTemplate(name, escpos string, datos any, assets string, ff formato.Fecha, ...) (string, error)
- func MergeXhtmlTemplate(name, xhtml string, datos any, assets string, ff formato.Fecha, ...) (string, error)
- func SendXhtmlMail(name, xhtml string, datos any, assets string, ff formato.Fecha, ...) error
Examples ¶
Constants ¶
Variables ¶
This section is empty.
Functions ¶
func GenerateEscPos ¶ added in v2.5.3
Genera un []byte esc/pos (binario) a partir de una plantilla *.escpos.
Example ¶
// Cargar plantilla plantilla, err := os.ReadFile("plantilla.escpos") errores.PanicIfError(err) // Fusionar plantilla con estructura factura f, err := plantillas.MergeEscPosTemplate( "escpos", string(plantilla), factura, "/assets", formato.DMA, formato.EUR, ) errores.PanicIfError(err) // Convertir la plantilla fusionada a fichero esc/pos binario prn, _, err := plantillas.GenerateEscPos(f) errores.PanicIfError(err) // Guardar salida binaria (o enviar a impresora) os.WriteFile("recibo.prn", []byte(prn), 0666) fmt.Println("Generado fichero recibo.prn")
Output: Generado fichero recibo.prn
func GenerateEscPosPdf ¶ added in v2.5.3
Genera un fichero PDF a partir de una secuencia esc/pos. Parámetros:
- escpos: secuencia binaria esc/pos, tal y como se enviaría a la impresora
- out: fichero PDF de salida
- width: ancho del papel en mm
- opciones: opciones adicionales utilidad wkhtmltopdf (ver https://wkhtmltopdf.org/usage/wkhtmltopdf.txt)
Example ¶
// Cargar plantilla plantilla, err := os.ReadFile("plantilla.escpos") errores.PanicIfError(err) // Fusionar plantilla con estructura factura f, err := plantillas.MergeEscPosTemplate( "escpos", string(plantilla), factura, "/assets", formato.DMA, formato.EUR, ) errores.PanicIfError(err) // Convertir la plantilla fusionada a fichero esc/pos binario prn, mm, err := plantillas.GenerateEscPos(f) errores.PanicIfError(err) // Genera fichero PDF err = plantillas.GenerateEscPosPdf(prn, "recibo.pdf", mm) errores.PanicIfError(err) fmt.Println("Generado fichero recibo.pdf")
Output: Generado fichero recibo.pdf
func GenerateXhtmlPdf ¶
func GenerateXhtmlPdf(name, xhtml string, datos any, assets string, ff formato.Fecha, fp formato.Moneda, out string, opciones ...string) error
Genera un fichero PDF a partir de una plantilla XHTML usando la utilidad wkhtmltopdf, que debe estar previamente instalada. Parámetros:
- name: nombre arbitrario para la plantilla que aparece en los mensajes de error.
- xhtml: plantilla en formato XHTML
- datos: estructura de datos para fusionar con la plantilla
- assets: ruta de imágenes u otros recursos (attributos src y href). Si es una ruta local, debe estar precedida por file://
- ff: formato de las fechas para las funciones DATETIME y DATE
- fp: formato de los precios para la funcion PRICE
- out: fichero PDF de salida
- opciones: opciones adicionales utilidad wkhtmltopdf (ver https://wkhtmltopdf.org/usage/wkhtmltopdf.txt)
Example ¶
// Carga plantilla HTML plantilla, err := os.ReadFile("plantilla.html") errores.PanicIfError(err) // Genera fichero PDF err = plantillas.GenerateXhtmlPdf( "pdf", string(plantilla), factura, "file:///assets", formato.DMA, formato.EUR, "factura.pdf", "--no-outline", ) errores.PanicIfError(err) fmt.Println("Generado fichero factura.pdf")
Output: Generado fichero factura.pdf
func MergeEscPosTemplate ¶ added in v2.5.3
func MergeEscPosTemplate(name, escpos string, datos any, assets string, ff formato.Fecha, fp formato.Moneda) (string, error)
Fusiona una plantilla esc/pos con un struct o map de datos.
- name: nombre arbitrario para la plantilla que aparece en los mensajes de error
- escpos: plantilla en formato *.escpos
- datos: estructura de datos para fusionar con la plantilla
- assets: ruta de imágenes u otros recursos
- ff: formato de las fechas para las funciones DATETIME y DATE
- fp: formato de los precios para la funcion PRICE
Example ¶
// Cargar plantilla plantilla, err := os.ReadFile("plantilla.escpos") errores.PanicIfError(err) // Fusionar plantilla con estructura factura f, err := plantillas.MergeEscPosTemplate( "escpos", string(plantilla), factura, "/assets", formato.DMA, formato.EUR, ) errores.PanicIfError(err) // Guardar salida os.WriteFile("recibo.escpos", []byte(f), 0666) fmt.Println("Generado fichero recibo.escpos")
Output: Generado fichero recibo.escpos
func MergeXhtmlTemplate ¶
func MergeXhtmlTemplate(name, xhtml string, datos any, assets string, ff formato.Fecha, fp formato.Moneda) (string, error)
Fusiona una plantilla XHTML con un struct o map de datos.
- name: nombre arbitrario para la plantilla que aparece en los mensajes de error
- xhtml: plantilla en formato XHTML
- datos: estructura de datos para fusionar con la plantilla
- assets: ruta de imágenes u otros recursos (attributos src y href)
- ff: formato de las fechas para las funciones DATETIME y DATE
- fp: formato de los precios para la funcion PRICE
Example ¶
// Cargar plantilla plantilla, err := os.ReadFile("plantilla.html") errores.PanicIfError(err) // Fusionar plantilla con estructura factura f, err := plantillas.MergeXhtmlTemplate( "html", string(plantilla), factura, "/assets", formato.DMA, formato.EUR, ) errores.PanicIfError(err) // Guardar salida os.WriteFile("factura.html", []byte(f), 0666) fmt.Println("Generado fichero factura.html")
Output: Generado fichero factura.html
func SendXhtmlMail ¶
func SendXhtmlMail(name, xhtml string, datos any, assets string, ff formato.Fecha, fp formato.Moneda, adjuntos []string, from, to, subject string, bcc, replyto []string, host string, port int, username, password string) error
Envia un correo a partir de una plantilla XHTML. Parámetros:
- name: nombre arbitrario para la plantilla que aparece en los mensajes de error
- xhtml: plantilla en formato XHTML
- datos: estructura de datos para fusionar con la plantilla
- assets: URL de imágenes u otros recursos (attributos src y href). Debe ser una ruta públicamente accesible por internet.
- ff: formato de las fechas para las funciones DATETIME y DATE
- fp: formato de los precios para la funcion PRICE
- adjuntos: ficheros a adjuntar
- from,to,subject,bcc,replyto: parámetros MIME
- host,port,username,password: parámtros SMTP. La contraseña debe ir codificada en base64.
Example ¶
// Carga plantilla HTML plantilla, err := os.ReadFile("plantilla.html") errores.PanicIfError(err) // Enviar por correo err = plantillas.SendXhtmlMail( "mail", string(plantilla), factura, "https://spark2.horus.es/assets", formato.DMA, formato.EUR, []string{"adjunto.pdf"}, "remitente@horus.es", "destinatario@horus.es", "Asunto", []string{"bcc@horus.es"}, []string{"replyto@horus.es"}, "smtp.horus.es", 25, "automaticos@horus.es", "c2VjcmV0bw==", ) fmt.Println(err)
Output: mail: dial tcp: lookup smtp.horus.es: no such host
Types ¶
This section is empty.