def p = new UiPrintableSpecifier().ui {
printableHeader "3.5cm", { (1)
show new UiShowSpecifier().ui {
fieldLabeled u.username_ (2)
}, BlockSpec.Width.THIRD
show new UiShowSpecifier().ui {
field """
<div style="text-align: center;">
<img style="height: 2.5cm;"
src="data:image/png;base64,${png}"/>
</div>
"""
}, BlockSpec.Width.THIRD
show new UiShowSpecifier().ui {
field Style.ALIGN_RIGHT, 'Print Date',
new Date().toString()
}, BlockSpec.Width.THIRD
}
printableBody { (3)
def a = book.author
show new UiShowSpecifier().ui {
field Style.ALIGN_CENTER,
"""<h1>${book.name}</h1>"""
fieldUnlabeled Style.MARKDOWN_BODY,
book.abstractTextHtml_
}, BlockSpec.Width.MAX
show new UiShowSpecifier().ui {
fieldLabeled book.isbn_
section 'Author', {
fieldLabeled book.author_, a.firstName_
fieldLabeled book.author_, a.lastName_
}
}, BlockSpec.Width.HALF
show new UiShowSpecifier().ui {
section 'Stock', {
fieldLabeled book.number_
fieldLabeled book.stock_
}
}, BlockSpec.Width.HALF
table bookstoreUiService.buildBorrowedBookTable(),
BlockSpec.Width.MAX (4)
}
printableFooter { (5)
}
}
Table of Contents
-
Renderizzato in HTML
-
Renderizzato in PDF
-
Renderizzato in CSV
DSL per documenti stampabili, responsabile della disposizione degli elementi grafici della pagina su un documento statico (tipicamente un PDF, ma in futuro potranno essere aggiunti altri formati).
Esempio di codice per la creazione di un blocco stampabile
PDF di base
| 1 | printableHeader consente di definire un’intestazione che verrà ripetuta su tutte le pagine; il parametro dell’altezza è obbligatorio se è necessaria un’altezza diversa da 2 cm. |
| 2 | È possibile utilizzare le normali closure show. |
| 3 | printableBody definisce il contenuto del PDF su più pagine. |
| 4 | È possibile utilizzare le normali closure table; anche diagram è supportato. |
| 5 | printableFooter consente di definire il piè di pagina che verrà ripetuto su tutte le pagine; la dimensione non deve superare i 2 cm. |

Gerarchia dei simboli di Printable Block DSL
Figure 1. Diagramma della gerarchia dei simboli per Printable Block DSL