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

screenshot pdf

Hiérarchie des symboles du Printable Block DSL

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