plantillas

package
v2.7.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 21, 2025 License: LGPL-3.0 Imports: 31 Imported by: 0

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

Examples

Constants

View Source
const (
	TAB = byte(0x09)
	LF  = byte(0x0a)
	CR  = byte(0x0d)
	FF  = byte(0x0c)
	ESC = byte(0x1b)
	FS  = byte(0x1c)
	GS  = byte(0x1d)
)

Variables

This section is empty.

Functions

func C128auto added in v2.6.2

func C128auto(codigo []byte) (auto []byte)

Cambio automatico entre las variantes A, B y C

func GenerateEscPos added in v2.5.3

func GenerateEscPos(escpos string) (bin []byte, width int, err error)

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

func GenerateEscPosPdf(escpos []byte, out string, width int, opciones ...string) error

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.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL