EstandarRendererStrategy
extends AbstractRendererStrategy
in package
implements
RendererStrategyInterface
Renderizador de DTE usando la plantilla estándar de LibreDTE.
Attributes
- #[Strategy]
- $name: 'template.estandar'
- $worker: 'renderer'
- $component: 'document'
- $package: 'billing'
Table of Contents
Interfaces
- RendererStrategyInterface
- Interfaz base de las estrategias de renderizado de documentos tributarios.
Properties
- $optionsSchema : array<string, array<string|int, mixed>|bool>
- Esquema de las opciones.
Methods
- __construct() : mixed
- render() : string
- Realiza el renderizado del documento.
- createDataAndOptions() : array<string|int, mixed>
- Crea los datos que se pasarán a la plantilla que se renderizará.
Properties
$optionsSchema
Esquema de las opciones.
protected
array<string, array<string|int, mixed>|bool>
$optionsSchema
= [
'__allowUndefinedKeys' => true,
'template' => ['types' => 'string', 'default' => 'estandar'],
'format' => ['types' => 'string', 'default' => 'pdf'],
// Configuración pasada tal cual al motor de PDF (mPDF). Se define
// acá, vía PHP, y no con `@page` en el CSS de la plantilla: mPDF no
// soporta `@page` anidado dentro de `@media` (como usa el resto de
// los estilos "solo para impresión" de la plantilla) y, al toparse
// con esa regla, corrompe el parseo del resto de la hoja de estilos
// (por ejemplo, ignora silenciosamente el `background-color` del
// body) y dejaba un espacio en blanco enorme antes del encabezado.
'pdf' => ['types' => 'array', 'schema' => [
// Carta (Letter, 215.9 x 279.4mm / 612 x 792pt): mismo
// tamaño que emite el SII (verificado con `pdfinfo` sobre un
// PDF real de referencia). Antes se usaba 216x260mm (una
// hoja recortada ~19mm de alto respecto a Carta real).
'format' => ['types' => 'string', 'default' => 'Letter'],
// Ajustado a ojo (14mm) tras comparar con el PDF de
// referencia del SII: 18mm (la medición inicial) dejaba el
// emisor un poco más abajo de lo esperado.
'margin_top' => ['types' => 'int', 'default' => 14],
'margin_bottom' => ['types' => 'int', 'default' => 5],
'margin_left' => ['types' => 'int', 'default' => 5],
'margin_right' => ['types' => 'int', 'default' => 5],
'margin_header' => ['types' => 'int', 'default' => 0],
'margin_footer' => ['types' => 'int', 'default' => 0],
]],
]
Methods
__construct()
public
__construct(RendererInterface $renderer) : mixed
Parameters
- $renderer : RendererInterface
render()
Realiza el renderizado del documento.
public
render(DocumentBagInterface $bag) : string
Parameters
- $bag : DocumentBagInterface
-
Contenedor con los datos del documento a renderizar.
Return values
string —Datos binarios del renderizado.
createDataAndOptions()
Crea los datos que se pasarán a la plantilla que se renderizará.
protected
createDataAndOptions(DocumentBagInterface $bag) : array<string|int, mixed>
Parameters
- $bag : DocumentBagInterface
-
Bolsa con los datos del documento a renderizar.
Return values
array<string|int, mixed> —Datos que se pasarán a la plantilla al renderizar.