J'ai généré un PDF depuis du HTML avec Chrome en ligne de commande. À l'œil, il était parfait. Mais quand j'en ai extrait le texte avec un outil basé sur pdf.js, mes titres de section sortaient comme ça :
E X P É R I E N C E
STA C K
Avec pdftotext (poppler), les mêmes mots sortaient entiers. Même fichier, deux lectures.
J'ai regardé l'intérieur du PDF. Dans le mien, Chrome n'écrit pas des mots mais à peu près un caractère par opération : 3 136 opérations d'affichage de texte pour 3 062 repositionnements. Chaque lettre est placée en absolu.
Mes titres avaient un letter-spacing: .13em. En retirant l'interlettrage, les mots sont ressortis entiers dans les deux outils. Je compense en taille de police :
/* avant */
h2 { letter-spacing: .13em; font-size: 8.4pt; }
/* après */
h2 { letter-spacing: 0; font-size: 9pt; }
Un PDF n'est pas du texte, c'est une liste de glyphes positionnés. Qu'il soit beau à l'œil ne garantit pas qu'une machine saura le lire.
Si le texte de ton PDF doit être trouvé, copié ou indexé, teste-le avec au moins deux extracteurs. Un seul peut te dire que tout va bien.
Amine Affif, développeur full-stack à Paris. amineaffif.com
Top comments (1)
Some comments may only be visible to logged-in visitors. Sign in to view all comments.