Faire sous Linux un PDF "propre" au format A5

Cette page présente une méthode pour produire sous Linux® (Ubuntu 7.10 mais la technique est plus générale) 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, conforme aux exigences de lulu.com.

Données de base

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 :

  1. Imprimer son document dans un fichier POSTCRIPT,
  2. Transformer le fichier ps obtenu en un fichier pdf répondant aux spécifications énoncées.

C'est maintenant qu'on retrousse ses manches.

Préliminaires

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.

Ancienne génération (testé sous Gutsy Gibbon)

(pour les distributions récentes, la méthode est légèrement différente, comme indiqué plus bas.)

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.

Nouvelle génération (testé sous Lucid Lynx)

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.

Le plus dur est fait !

Génération du fichier postscript

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", 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.

Génération du fichier pdf

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.


Retour à l'accueil LINUX