Ce que hqf-pdf produit

Des documents entiers — factures, bons de livraison, bulletins de paie, contrats — et un petit exemple pour chaque fonction dont ils sont bâtis, produisant chacun un vrai PDF. Chacun a sa propre page, montrant le document qu'il produit et le Rust et le Python qui l'écrivent.

Voir les PDF produits Voir pourquoi les fichiers font moitié moins

Documents métier complets

Pages, texte et polices

Paragraphes, colonnes et typographie

Les tabulations et leurs taquets

Les mêmes lignes tabulées sous chacune des trois méthodes, puis un sommaire dont les points courent jusqu'à un taquet placé à droite. Une tabulation peut avancer d'un pas depuis l'endroit où l'on se trouve, tomber sur la grille régulière d'une machine à écrire, ou viser un taquet précis, sur lequel le texte qui suit commence, se centre, ou s'aligne par sa virgule.

Voir le code en : Rust Python

Les tableaux

Un tableau qui se pagine tout seul

Un long tableau confié d'un bloc, qui décide lui-même de son découpage en pages : son en-tête en haut de chaque page, sa note en bas de chaque page, ses fonds gris définis une seule fois pour tout le tableau, et une mention que l'on trace soi-même sous chaque page, à l'endroit exact que le tableau indique.

Voir le code en : Rust Python

Couleur, encres et impression

Une feuille que l'imprimeur lance sans avoir une question à poser

Une feuille plus grande que la page finie : la couleur dépasse de neuf points l'endroit où tombe la lame, les repères de coupe se tiennent en dehors, dans une encre que porte chacune des plaques, toutes les couleurs sont données dans les quatre encres d'imprimerie, et la page nomme le papier, la limite de la couleur et la coupe. Donnez-lui le profil de couleur d'une presse et elle se déclare conforme au PDF/X-4 ; sans lui, elle ne déclare rien du tout, et écrit sur la page pourquoi.

Voir le code en : Rust Python

Les mêmes nombres, à travers des espaces qui disent ce qu'ils veulent dire

Six couleurs et un dégradé de gris peints trois fois avec exactement les mêmes nombres : d'abord laissés à l'appareil, puis dits de deux façons qui précisent contre quel blanc ils sont mesurés, quelle courbe leur est appliquée et jusqu'où vont les couleurs de base. Tout cela tient en une poignée de nombres, sans aucun profil à ranger dans le fichier.

Voir le code en : Rust Python

Les fonctions, la forme que suit une couleur

Ce qu'une fonction fait faire à une couleur, dans chacune de ses quatre formes : un spectre lu dans une table de valeurs, un dégradé découpé en bandes par un petit programme de calcul, une encre dont la recette de conversion est un programme imprimé sous ses pastilles, et une table recollée bout à bout entre deux extrémités.

Voir le code en : Rust Python

Dessin, motifs et transparence

Un rectangle, quatre masques

Le même rectangle uni quatre fois de suite, chacun sous un masque différent — un fondu en dégradé, un assombrissement des bords, des lettres découpées dedans, et une découpe lue sur la transparence — plus un bandeau qui s'efface, avec à l'intérieur une étiquette qui, elle, reste entière.

Voir le code en : Rust Python

Les images

Codes-barres et codes 2D

Formulaires, tampons et surimpressions

Archivage, accessibilité et métadonnées

Une feuille qui mesure ce qu'elle annonce

Trois réglettes — centimètres, pouces et points — sur une page qui annonce qu'elle doit s'imprimer exactement à la taille où elle a été dessinée, et que le logiciel de lecture ne doit rien proposer d'autre. Cette seconde demande n'existe que depuis le PDF 2.0 : le fichier déclare donc 2.0, au lieu de changer de version à votre insu.

Voir le code en : Rust Python

Un registre dont chaque partie dit d'où elle vient

Deux séances reliées dans un même fichier. Chaque page porte sa propre fiche — ce qu'elle est, de quelle main elle est, de quand elle date — le cliché de la seconde page en porte une aussi, et chaque transcription est rattachée à la page qu'elle transcrit et non au fichier entier. Rattacher un fichier joint à autre chose que le document entier n'existe que depuis le PDF 2.0 : le fichier déclare donc 2.0.

Voir le code en : Rust Python

Une feuille d'archive qui porte des champs à elle

La référence d'un service d'archives, le service d'origine, la date jusqu'à laquelle le document doit être conservé et sa classification, dans un fichier PDF/A-3. Aucune norme ne sait ce qu'est une date de conservation : chaque champ arrive donc avec sa propre description — son type, à qui il s'adresse, ce qu'il veut dire — et c'est cela qui fait accepter par un logiciel de contrôle des informations que vous avez inventées. La page imprime la même liste, si bien que ce que lit une personne et ce que lit une machine ne peuvent pas diverger.

Voir le code en : Rust Python

Exemples du serveur PDF

Le serveur hébergé a son propre jeu d'exemples. Ils apparaîtront ici une fois qu'ils auront été produits.