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
-
Gerendert in HTML
-
Gerendert in PDF
-
Gerendert in CSV
DSL für druckbare Dokumente, die für die Anordnung grafischer Seitenelemente in einem statischen Dokument zuständig ist (typischerweise ein PDF, weitere Formate können zukünftig hinzugefügt werden).
Codebeispiel zur Erstellung eines druckbaren Blocks
Einfaches PDF
| 1 | printableHeader ermöglicht die Definition einer Kopfzeile, die auf allen Seiten wiederholt wird; der Höhenparameter ist erforderlich, wenn eine andere Höhe als 2 cm benötigt wird. |
| 2 | Sie können reguläre show-Closures verwenden. |
| 3 | printableBody definiert den Inhalt des PDFs über mehrere Seiten hinweg. |
| 4 | Sie können reguläre table-Closures verwenden, diagram wird ebenfalls unterstützt. |
| 5 | printableFooter ermöglicht die Definition einer Fußzeile, die auf allen Seiten wiederholt wird; die Größe darf nicht größer als 2 cm sein. |

Symbolhierarchie der Printable Block DSL
Figure 1. Symbolhierarchiediagramm für Printable Block DSL