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
-
Rendu en HTML
-
Rendu en PDF
-
Rendu en CSV
DSL pour les documents imprimables, chargé d’organiser les éléments graphiques d’une page sur un document statique (généralement un PDF, mais d’autres formats pourront être ajoutés à l’avenir).
Exemple de code de construction de bloc imprimable
PDF de base
| 1 | printableHeader permet de définir un en-tête qui sera répété sur toutes les pages ; le paramètre de hauteur est obligatoire si vous avez besoin d’une hauteur différente de 2 cm. |
| 2 | Vous pouvez utiliser des closures show classiques. |
| 3 | printableBody définit le contenu du PDF sur plusieurs pages. |
| 4 | Vous pouvez utiliser des closures table classiques, diagram est également pris en charge. |
| 5 | printableFooter permet de définir le pied de page qui sera répété sur toutes les pages ; la taille ne doit pas dépasser 2 cm. |

Hiérarchie des symboles du Printable Block DSL
Figure 1. Diagramme de hiérarchie des symboles pour Printable Block DSL