The trashiest blog in the World...

Aller au contenu | Aller au menu | Aller à la recherche

Curriculum Vitae en PDF : au régime sans sel !

« Comme je n'ai pas trouvé ça sur internet... » (Merci à pingou pour cette superbe introduction...)

Mais je m'égare, expliquons auparavant les faits. J'ai passé pas mal de temps ce week-end à refaire mon Curriculum Vitae ; tant du point de vue technique que du point de vue contenu.

La chose est stockée dans un fichier XML ; la version HTML est présentée à l'aide d'une transformation XSLT assurée par PHP, la version PDF à l'aide de TCPDF.
L'ancienne version PDF utilisait une police de caractères qui n'était malheureusement pas libre. J'ai donc décidé d'utiliser dorénavant DejaVu.

Jusque là, rien de bien problématique me direz-vous, et vous avez parfaitement raison. Mais (oui, il y a un « mais »)... La nouvelle version PDF pèse 1004Ko, ce qui est beaucoup trop.

Une solution simple glanée sur le web consiste à utiliser les commandes ghostscript prévues à cet effet : pdf2ps et ps2pdf. Je me lance :

$ pdf2ps cv.pdf cv.ps
$ ps2pdf cv.ps cv_light.pdf

Le résultat, un fichier de 116Ko. Très bien ! Mais ce nouveau fichier n'inclus pas les polices de caractères utilisées, le rendu en serait donc parfaitement escamoté sur les plates-formes n'en disposant pas :

$ pdffonts cv_light.pdf
name                                 type              emb sub uni object ID
------------------------------------ ----------------- --- --- --- ---------

Une brève discussion sur IRC m'apprend qu'un ou deux petits paramètres supplémentaires à la commande ps2pdf me seraient fort utiles. Je tente donc à nouveau :

$ ps2pdf -dEmbedAllFonts=true -dUseFlateCompression=true -dOptimize=true cv.ps cv_light.pdf

Même résultat, pas de police embarquée dans mon PDF (mais, que fait la police ?). Après moult recherches, c'est finalement Pikachu_2015 qui a trouvé la solution (mille mercis à lui - et encore c'est peu !) pour son aide qui, une fois de plus, s'avère fort précieuse : en utilisant la commande pdftops en lieu et place de pdf2ps et le problème n'existe plus !

$ du -sh cv.pdf
1004K	cv.pdf
$ pdftops cv.pdf cv.ps
$ ps2pdf -dEmbedAllFonts=true -dUseFlateCompression=true -dOptimize=true cv.ps cv_light.pdf
$ pdffonts cv_light.pdf 
name                                 type              emb sub uni object ID
------------------------------------ ----------------- --- --- --- ---------
WBKNZC+DejaVuSans-Bold_00            TrueType          yes yes no       8  0
LNOFXB+DejaVuSans_00                 TrueType          yes yes no      10  0
IVPSUP+DejaVuSans-Oblique_00         TrueType          yes yes no      12  0
$ du -sh cv_light.pdf 
44K	cv_light.pdf

Et voilà ! En espérant que cette petite astuce pourra servir à d'autres. Il est probable que l'utilisation d'options adéquates passées à pdf2ps renverraient le même résultat, mais je ne les ai pas trouvées.
Prochaine étape : réussir à faire maigrir le fichier PDF généré par PHP directement...

Commentaires

1. Le jeudi 12 mai 2011, 20:58 par trashy

Les dernières versions de TCPDF permettent de réduire la taille du PDF généré directement depuis PHP.

Mon CV passe donc pour le coup de 1004Ko à 152Ko, ce qui reste relativement acceptable :-)