Cette page présente une méthode pour produire sous Linux® un pdf "propre" au format A5 (14,85 cm x 21 cm) utilisable en production par un éditeur ou pour faire son auto-édition et, en particulier, en principe, conforme aux exigences de lulu.com. Elle est facile à adapter à d'autres formats de page. Elle est mise en œuvre sous Ubuntu (diverses distributions) mais la technique est plus générale.
L'auteur de cette page fait de son mieux pour partager son expérience en la matière mais ne garantit pas l'absence d'erreurs. Par ailleurs, des évolutions techniques des logiciels peuvent survenir et obliger à adapter les opérations effectuées. L'auteur ne pourra pas être tenu responsable de résultats incorrects. Il appartient à l'utilisateur d'exercer son esprit critique et de tester.
Comme la plupart des ouvrages publiés, les livres que l'on peut éditer chez lulu.com ne sont pas au format A4. Ils sont fabriqués par l'impression d'un pdf qui peut être effectuée chez divers prestataires non connus à l'avance. Le fichier pdf doit donc être très robuste pour permettre l'obtention d'une version papier conforme aux attentes de l'auteur, indépendamment de l'imprimante utilisée.
A cet effet, il doit contenir TOUTES les polices utilisées, de préférence rien que les polices utilisées, et, SURTOUT, CHAQUE POLICE UTILISEE NE DOIT APPARAITRE QU'UNE FOIS DANS LE FICHIER, sous peine de désagréments. Malheureusement, les nombreux logiciels qui permettent à tout un chacun de produire son pdf aujourd'hui ne respectent pas forcément ces exigences et l'auteur de cette page a pu faire l'expérience que ceci peut conduire à des résultats aléatoires.
A titre d'exemple, voici un extrait d'une page polluée par des signes parasites qui sont appparus seulement dans le onzième exemplaire imprimé d'un ouvrage !
Comme le montre l'image précédente, la présence redondante d'une police avec deux codages différents produit une salade de caractères indésirables...
Les utilisateurs de Windows® trouveront leur voie à l'aide des solutions expliquées par Don Campbell dans sa FAQ sur le PDF et, notamment, dans son guide sur le PostScript.
Sous Linux®, il est aussi possible de faire les choses proprement et sans débourser un centime mais cela demande de mettre un peu les mains sous le capot pour disposer d'une méthode qui permette de maîtriser à la fois les polices et le format de page.
En fait, après quelques préliminaires effectués une fois pour toutes, il faut procéder en deux étapes :
C'est maintenant qu'on retrousse ses manches.
Pour produire le fichier Postscript requis dans le premier temps, il ne faut pas utiliser n'importe quel pilote. Il FAUT utiliser celui d'Adobe
qui est spécialement optimisé pour la fabrication ultérieure d'un pdf.
Malheureusement, le fichier de description des caractéristiques Postscript de "l'imprimante" correspondante,
connu sous le doux nom de adist.ppd (ppd = Printer Postscript Description), ne contient, en dehors des formats anglo-saxons classiques, que les
formats A3 et A4.
Toutefois, ce fichier est un simple fichier texte facile à modifier pour y ajouter le format de
son choix. Dans ce qui suit, deux manipulations vont être faites simultanément:
- changer le format par défaut de Letter à A4,
- ajouter le format personnalisé A5 parmi les formats offerts.
Le A5, demi A4, mesure
- en largeur :
148,5 mm, soit en pouces 148,5/25,4 = 5,846456693 in, soit en points à raison de 72 dpi 5,846456693*72 = 420,94488189
arrondi à 421 points,
- en hauteur :
210 mm, soit en pouces 210/25,4 = 8,267716535 in, soit en points à raison de 72 dpi 8,267716535*72 = 595,275590551
arrondi à 595 points.
Pour un autre format, il suffit de choisir un nom simple et de faire les mêmes calculs. Dans la suite, on prend
l'exemple de A5 [421, 595].
Télécharger le fichier adist5.ppd sur le site de Don Campbell ou bien sur le site d'Adobe où il se trouve dans le fichier adobe.zip (clic droit sur le lien puis "Enregistrer sous...").
Oui, c'est un fichier qui est présenté dans un contexte d'utilisation sous Windows® mais, pas de panique, tout va bien se passer.
Enregistrer adist5.ppd ou adobe.zip à un endroit facile à retrouver. Si nécessaire, extraire adist5.ppd puis en faire une copie qui va être modifiée, en la nommant différemment, par exemple adist_avec_A5.ppd. Ce fichier peut se trouver n'importe où, du moment qu'il est facile à retrouver. Avec un éditeur de texte, par exemple gedit, ouvrir la copie adist_avec_A5.ppd et lui apporter les modifications suivantes qui ont pour effet, de manière évidente, de mettre A4 comme format par défaut et d'ajouter A5 dans les formats disponibles.
=== début de manipulation ===
Dans la rubrique *% Paper Handling , changer la taille par défaut en :
*DefaultPageSize: A4
Dans la liste des définitions de formats, ajouter les lignes suivantes, qui utilisent les calculs précédents (on peut faire un copier coller des lignes relatives à A4 et les modifier) :
*PageSize A5: "
2 dict dup /PageSize [421 595] put dup /ImagingBBox null put
setpagedevice"
*End
Conpléter la rubrique *?PageSize: " par la ligne indiquée en gras ci-dessous :
save
...
dup [421 595] (A5) put
...
{ exch aload pop 4 index sub abs 5 le exch
5 index sub abs 5 le and
{ exch pop exit } { pop } ifelse
} bind forall
= flush pop pop
restore
"
Dans la rubrique *OpenUI *PageRegion: PickOne, modifier la taille par défaut pour lire :
*DefaultPageRegion: A4
et ajouter :
*PageRegion A5: "
2 dict dup /PageSize [421 595] put dup /ImagingBBox null put
setpagedevice"
*End
Dans la rubrique *% The following entries provide information about specific paper keywords, modifier :
*DefaultImageableArea: A4
et ajouter :
*ImageableArea A5: "0.0 0.0 421.0 595.0"
Dans la rubrique *% These provide the physical dimensions of the paper (by keyword)
Changer :
*DefaultPaperDimension: A4
et ajouter :
*PaperDimension A5: "421 595"
=== fin de manipulation ===
Enregistrer et refermer le fichier ainsi modifié.
Il ne reste plus qu'à installer une nouvelle imprimante virtuelle qui va utiliser ce ppd pour produire un fichier postscript. Sous Ubuntu, ceci se fait en déroulant le menu Système > Administration > Impression (ou Imprimantes).
A ce jour, rien que sous Ubuntu, l'auteur de cette page connait trois configurations impliquant autant de recettes pour installer l'imprimante :
Il faut donc s'attendre à des variantes.
Dans la fenêtre qui s'ouvre, un clic sur "Nouvelle imprimante" ouvre une nouvelle boîte de dialogue
dans laquelle on sélectionne "Print into PDF file" et on clique sur suivant.
Dans la boîte suivante: on sélectionne "fournir un fichier ppd" et d'un clic sur la petite imprimante on parcourt le système de fichiers pour aller chercher le ppd modifié précédemment.
On clique sur suivant et dans la boîte suivante, il faut donner un nom à l'imprimante, simple mais explicite, et il est possible d'ajouter un commentaire
Cliquer sur "Appliquer", l'imprimante est disponible. Sortir de l'utilitaire d'administration de l'impression.
Après avoir déroulé le menu Système > Administration > Impression, un clic sur "+Ajouter" ouvre la boîte "nouvelle imprimante" pré-remplie.
Cependant, à ce stade, si l'on clique sur "Suivant", le système cherche puis installe automatiquement le pilote sans jamais laisser la possibilité de choisir son propre fichier ppd.
Il faut donc sélectionner "Autre", entrer manuellement la même URI cups-pdf:/ (copier-coller) puis cliquer sur "Suivant". Là, le système permet de choisir l'option de fournir le fichier ppd.
Dans le champ idoine, on choisit le fichier voulu puis on clique sur suivant. La boîte de dialogue propose le nom "Acrobat-Distiller" et une description.
Il ne reste plus qu'à cliquer sur "Appliquer". Dans "Impression", deux nouvelles imprimantes font surface : PDF et "Acrobat-Distiller", qu'on va utiliser.
La manipulation suivante fut faite sous Ubuntu-Mate Bionic Beaver 18.04.1 LTS avec la version 1.20.1 de l'environnement MATE.
A la date où cette mise à jour est faite (avril 2019), la nuance Mate de Ubuntu n'installe pas par défaut le paquet nécessaire pour engendrer un pdf avec la maîtrise apportée par la méthode expliquée ci-dessus.
Il faut donc commencer par installer, par exemple avec Synaptic, le paquet printer-driver-cups-pdf. Au passage,
cela crée dans le dossier personnel un
répertoire PDF dans lequel s'enregistreront les "impressions" demandées.
Cette installation fait apparaître dans le processus d'ajout d'une imprimante, à l'étape du choix du
périphérique, une option
Generic CUPS-PDF qui ne s'y trouvait pas auparavant.
Cependant, cette option ne permet pas de désigner un PPD personnalisé. Il faut choisir "Saisir l'URI" et
inscrire dans le champ URI le même libellé :
Après le clic sur "Suivant", il est alors possible de désigner le fichier PPD à utiliser.
Ensuite, il ne reste plus qu'à décrire l'imprimante et à cliquer sur Appliquer.
Pour la génération du fichier Postscript, il faudra utiliser la méthode détaillée ci-dessous pour le cas de Trusty Tahr avec le bureau MATE.
Le plus dur est fait !
Ouvrir le document à transformer dans son application d'origine (si elle était déjà ouverte, il faudra peut-être la fermer et la réouvrir pour qu'elle voit la nouvelle imprimante).
Lancer l'impression du fichier et choisir la nouvelle imprimante qui vient d'être créée, en cochant "Imprimer dans un fichier" (voir le cas particulier de Trusty Tahr avec le bureau MATE), et dans la boîte de dialogue "propriétés" choisir le format de papier souhaité et spécifier le langage de sortie de l'imprimante.
Par exemple dans OpenOffice :
Enregistrer le fichier voulu, par exemple mon_fichier.ps, dans le dossier adéquat.
Ce fichier peut être transféré à lulu.com qui offre la possibilité de produire le pdf. Cependant, si l'on veut tout faire soi même, il reste une étape à accomplir. Cela peut être intéressant pour réduire les temps de téléchargements, par exemple, les fichiers pdf étant considérablement moins volumineux que leurs homologues en postscript.
L'auteur constate que sous Trusty (Ubuntu 14.04.5 LTS), avec le bureau MATE (MATE Desktop Environment 1.8.2), en utilisant LibreOffice
(Version: 5.2.7.2 Build ID: 1:5.2.7-0ubuntu1~trusty1), la case à cocher "Imprimer dans un fichier" n'apparaît plus lorsqu'une imprimante est
sélectionnée, comme le montre l'illustration suivante rassemblant tous les onglets de la boite de dialogue "Imprimer".
Bien que la boite de dialogue "Propriétés" permette toujours de choisir Postscript comme langage de l'imprimante, l'impression est directement
traduite en PDF.
Exemple avec les options ci-dessus :
et, pour ceux qui douteraient, la commande file permet de vérifier :
$ file A5_LO_doc.pdf
A5_LO_doc.pdf: PDF document, version 1.4
Avec cette méthode, l'utilisateur ne maîtrse pas vraiment le processus. Observons aussi que le PDF est en version 1.4, alors qu'il
est préférable d'utiliser le 1.3 pour une meilleure compatibilité avec les éditeurs.
Que se passe-t-il si l'on emploie directement le langage pdf ?
$ file A5_LO_doc_langPDF.pdf
A5_LO_doc_langPDF.pdf: PDF document, version 1.4
Les deux fichiers ont exactement la même taille (pour info, l'odt source fait 409,4 ko) :
MAIS, pour ceux qui se poseraient la question, la commande cmp permet de comparer les deux fichiers octet par octet :
$ cmp -l A5_LO_doc.pdf A5_LO_doc_langPDF.pdf
2285227 60 61
2285228 70 141
2285229 61 64
2285230 142 141
2285231 65 143
2285232 66 64
2285233 141 63
2285234 67 64
2285239 143 146
[...]
et de conclure que les deux PDF produits sont différents.
Quoiqu'il en soit, les méthodes appliquées pour les élaborer ne permettent pas de garantir qu'ils répondent au besoin.
L'histoire ne s'arrête cependant pas là car il existe deux autres façons de produire un PDF depuis LibreOffice.
En effet, en tête de la liste des imprimantes utilisables dans la boite de dialogue "Imprimer" figure une option "Imprimer dans un fichier...".
Par défaut, cette option propose de créer un PDF en utilisant le pilote de l'imprimante par défaut du système, comme le montre l'illustration
suivante.
Cette manière de produire le PDF n'offre pas non plus la maîtrise suffisante pour répondre au besoin. Cependant, elle donne l'idée d'une procédure satisfaisante.
La solution consiste à :
La commande file permet de vérifier la nature du fichier :
$ file A5_LO_doc_Imprimer_PS.ps
A5_LO_doc_Imprimer_PS.ps: PostScript document text conforming DSC level 3.0, Level 3
Cette fois, on a bien obtenu le résultat voulu, un fichier Postscript produit par le pilote Adobe-Distiller. Il ne reste plus qu'à le convertir en un fichier PDF plat et propre en lui appliquant ghostscript, sous la forme du script pdf2ps13, comme expliqué au paragraphe suivant. Il est à noter que le pdf obtenu est beaucoup plus léger (170,9 ko !) que ceux obtenus par les méthodes précédentes.
Cette façon de gérer la commande "Imprimer dans un fichier..." résulte d'un patch rapidement produit pour corriger le
Bug 94097 - Make 'Print to File' button always visible in print dialog.
Elle semble avoir été ensuite abandonnée puisque dans Xenial Xerus, par exemple, on retrouve la case à cocher dans les options de
l'imprimante (capture suivante). C'est quand même plus facile.
Une page de lulu.com recommande d'utiliser la version 1.3 de PDF car elle ne gère pas les transparences et garantit le fichier plat voulu.
Par suite, ouvrir le terminal, aller dans le dossier où se trouve le fichier et lancer sa transformation en pdf par la commande ad hoc, en précisant le format de page souhaité, par exemple:
ps2pdf13 -sPAPERSIZE=a5 mon_fichier.ps
L'utilitaire ps2pdf connait un certain nombre de formats de papier (les mêmes que ghostscript, voir le manuel de ghostscript) mais si celui souhaité n'est pas normalisé, il est possible de forcer directement la taille du papier (en 1/72"). Par exemple, certains livres de lulu.com exigent un format un peu plus petit que le US letter: 8,25" x 10,75" soit 594 points x 774 points. La commande devient alors:
ps2pdf13 -dDEVICEWIDTHPOINTS=594 -dDEVICEHEIGHTPOINTS=774 -dFIXEDMEDIA mon_fichier.ps
Par ailleurs, par défaut, ps2pdf décide de l'orientation portrait/paysage de chaque page d'après son contenu. Il est possible d'empêcher les rotations en complétant la commande comme suit :
ps2pdf13 -dDEVICEWIDTHPOINTS=594 -dDEVICEHEIGHTPOINTS=774 -dFIXEDMEDIA -dAutoRotatePages=/None mon_fichier.ps
Après un petit moment dont la longueur dépend évidemment de la taille du fichier, cela produit mon_fichier.pdf. Voilà, c'est fini.
Les utilisateurs du logiciel Acrobat Reader ou d'un visionneur analogue pourront vérifier facilement dans les propriétés du fichier que la taille de la page est correcte et que toutes les polices y figurent et une seule fois chacune.