Si le document PDF que l'on souhaite convertir ne contient qu'une page, la question ne se pose pas. Sinon la conversion sera plus ou moins simple. On peut souhaiter convertir une seule page d'un PDF de plusieurs pages ou convertir un ensemble de pages. Dans ce dernier cas, il peut s'agir de toutes les pages, d'un ensemble de pages contiguës ou de page plus ou moins dispersées dans le document.
Il n'existe pas de recette universelle. Plus le cas à traiter sera complexe, plus il faudra attacher d'importance à l'organisation du processus de conversion afin de gagner du temps et de la sueur
Un document PDF peut contenir des données de natures assez différentes. Deux cas extrêmes illustrent cette diversité :
Dans le premier cas, notre conversion s'apparente plus à l'extraction d'un jpeg inséré dans un PDF. Dans le second cas, la conversion s'apparente à une simple rastérisation.
On s'en doute, on devra souvent traiter des contenus mixtes. Une simple photo pleine page avec un numéro page est un contenu mixte. Mais on souhaiterait probablement n'extraire que la photo… Et pourquoi pas dans son format natif, ne serait-ce que pour ne pas la dégrader.
Selon l'objectif poursuivi, l'attention qu'il faudra porter à la nature des contenus sera très variable. Dans certains cas, elle peut être capitale au sens où la négliger empêchera d'obtenir le résultat voulu alors que ce résultat est atteignable1)
Pour les impatiente qui veulent juste convertir une seule page d'un document, vite fait, sans exigence de qualité, l'outil de traitement d'images GIMP est un excellent choix.
Il suffit d'ouvrir le document PDF avec l'application GIMP. L'application demande de sélectionner la page souhaitée. Elle la charge et interprète son contenu sous la forme d'une image. Il ne reste plus qu'à exporter l'image au format souhaité.
Encore plus simple, si notre PDF contient une seule page, le convertisseur d'images convert sait ripper les PDF pour les convertir en images aux formats usuels2). Typiquement, pour une conversion en jpeg, la commande suivante fera le job:
$ convert -density 300 --quality 75 ma_source.pdf ma_destination.jpeg
On voit facilement comment adapter la densité (en ppi) et le niveau de compression ; on ajuste ainsi le poids de l'image résultante au niveau de qualité nécessaire. convert étant une commande très puissante, ne pas hésiter à consulter le manuel
$ man convert
Selon la stratégie choisie, il peut être intéressant/nécessaire d'extraire d'un document PDF les seules pages que l'on souhaite convertir. Cette extraction peut prendre deux formes :
Le “couteau suisse” du réassemblage de documents PDF est l'application pdftk (PDF Toolkit). La commande suivante :
$ pdftk ma_source.pdf cat 7 3 8 output ma_destination.pdf
extraira les pages 7, 3 et 8 et les réassemblera dans cet ordre.
La commande :
$ pdftk ma_source.pdf burst
éclatera automatiquement l'intégralité du document initial en autant de fichiers qu'il existe de pages.
Le tutoriel "pdftk pour modifier les pdf" explique simplement et illustre les multiples services que peut rendre cet outil. Les récalcitrantes à la ligne de commande peuvent tenter leur chance3) en utilisant PDF Chain qui l'une des interfaces graphiques à pdftk.
Si l'opération souhaitée est l'extraction d'une image/photo (et rien d'autre !) d'un document PDF, l'outil a privilégier est pdfimages. Mais dans un document PDF, comment savoir ce qui est encapsulé comme une image ? pdfimages fait ce travail d'analyse :
$ pdfimages -list ma_source.pdf
affichera la liste de images existantes. Tandis que
$ pdfimages -all ma_source.pdf image
effectuera l'extraction automatique de toutes les images présentes, en conservant leur encodage initial !
Des exemples d'utilisation permettent de comprendre le fonctionnement de cet outil. Pour explorer plus avant, il y toujours le manuel
$ man pdfimages
à lire sans modération.
Il arrive que l'image contenue dans un fichier PDF soit au format CCITT 4). Cette information figure dans les résultats de la commande «pdfimages -list», par exemple :
page num type width height color comp bpc enc interp object ID x-ppi y-ppi size ratio -------------------------------------------------------------------------------------------- 1 0 image 2416 3401 gray 1 1 ccitt no 3 0 301 301 91.5K 9.1%
L'extraction de l'image dans son format natif reste possible mais elle est plus complexe. Dans ce cas, l'extraction par pdfimages donne deux fichiers : l'un avec l'extension «.ccitt» l'autre avec l'extension «.params».
Ce couple de fichiers peut être converti au format tiff à l'aide de la commande fax2tiff5). Dans l'exemple d'un fichier PDF ne contenant qu'une seule image, la commande
$ pdfimages -all ma_source.pdf image
génère les fichiers : image-000.ccitt et image-000.params.
La conversion au format tiff s'obtient avec la syntaxe suivante :
$ fax2tiff `cat image-000.params` -o image-000.tiff image-000.ccitt
Source Juan Manuel: What can be used to open .ccitt files?
Si le fichier PDF contient plusieurs images de ce type6), cela peut devenir fastidieux. Le script suivant permet d'automatiser l'opération :
#!/bin/bash for f in *.ccitt do b=${f%.ccitt} p=$(cat $b.params) # enable if necessary rm -f $b.tiff fax2tiff $p -o $b.tiff $b.ccitt done