• 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
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)
    }
}
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.

screenshot pdf

Symbolhierarchie der Printable Block DSL

Diagram
Figure 1. Symbolhierarchiediagramm für Printable Block DSL