[45 minutes]

La réalisation de ce tutoriel porte sur la publication progressivement améliorée du fichier XHTML disponible en exemple.

Installer et tester Flying Saucer.

Question

Lancer Flying Saucer en ne précisant aucune feuille de style (désactiver la feuille de style dans le fichier XHTML) pour observer le stylage de base appliqué aux éléments XHTML (FS contient une feuille de style par défaut).

Question

Appliquer un style simple sur les éléments (h1, h2, p) et observer les changements dans le PDF : centrer les titres et justifier les paragraphes par exemple.

Question

Préciser un style de page qui réduit la taille des pages et augmente leurs marges.

Indice

CSS3 Module: Paged Media

Section : "3. Page Boxes: the @page Rule"

http://www.w3.org/TR/css3-page/#page-box-page-rule

Question

Modifier la police du document, en utilisant la police Computer Modern spécifiée dans le fichier polices/cmunrm.ttf du dossier de l'exemple.

Indice

CSS Fonts Module Level 3

Section : "4 Font resources > 4.1 The @font-face rule"

http://www.w3.org/TR/css3-fonts/#font-face-rule

Indice

Il faut déclarer un @font-face pour les 4 types de polices (normal, bold, italic, bold/italic).

Indice

La propriété -fs-pdf-font-embed est spécifique à FS et permet d'embarquer la police dans le PDF.

Question

Insérer des sauts de page avant chaque partie du document (div de classe part) et éviter les veuves et les orphelins (adapter le document pour visualiser la gestion des veuves et orphelins).

Indice

CSS3 Module: Paged Media

Section : "5. Page Breaks"

http://www.w3.org/TR/css3-page/#page-breaks

Question

Numéroter automatiquement les parties en utilisant un compteur personnalisé.

Indice

Cascading Style Sheets Level 2 Revision 1 (CSS 2.1) Specification

Section : "Syntax and basic data types > 4.3.5 Counters"

http://www.w3.org/TR/CSS21/syndata.html#counter

Indice

La pseudo-classe :before permet d'insérer le compteur avant le contenu inline de l'élément

Question

Insérer des numéros de page en marge, dont la position dépend si l'on se situe sur une page paire ou impaire. On utilisera le compteur page géré en interne par le moteur.

Indice

CSS Generated Content for Paged Media Module

Section : "2. Running headers and footers"

http://www.w3.org/TR/css3-gcpm/#running-headers-and-footers

Indice

Les @bottom-left, @bottom-right n'hérite de rien : il faut dupliquer les règles de mise en forme (police, taille)

Indice

CSS Paged Media Module Level 3

Section : "7.1. Page-based counters"

http://dev.w3.org/csswg/css3-page/#page-based-counters

Question

Insérer le titre du document en entête des pages.

L'élément portant le contenu à mettre en marge doit être sorti du "flot" par la propriété position: running(<identifiant>), il peut ensuite être référencé par un content: element(<identifiant>).

Indice

CSS Generated Content for Paged Media Module

Section : "2. Running headers and footers"

http://www.w3.org/TR/css3-gcpm/#running-headers-and-footers

Indice

On utilise la balise title du head plutôt que de créer un autre élément portant le titre, le head étant caché par la feuille de style par défaut, on force son affichage dans une première règle : head {display: block;}

Indice

La mise en forme des blocs référencés de cette manière n'est pas facile, il ne vaut mieux pas trop en abuser.

Question

Créer une table des matières.

Indice

CSS Generated Content for Paged Media Module

Section : "3. Leaders"

http://www.w3.org/TR/css3-gcpm/#leaders

Indice

La fonction leader('.') insère des points jusqu'à la fin de la ligne.

Indice

la fonction target-counter(attr(href), page) récupère la valeur du compteur page tel qu'il est à l'élément pointé par l'attribut href.

NB : Cela ne fonctionne que pour le compteur page dans Flying Saucer.