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

screenshot pdf

Gerarchia dei simboli di Printable Block DSL

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