Table des matières

Convertir un PDF en Bitmap

Convertir une ou plusieurs pages

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 ;-)

Adapter la conversion au type de contenu du PDF

Un document PDF peut contenir des données de natures assez différentes. Deux cas extrêmes illustrent cette diversité :

  1. le PDF ne contient rien d'autre qu'une photo encodée en jpeg,
  2. le PDF est un export de traitement de texte qui ne contient que du texte mis en page, composé à l'aide de polices de caractères vectorielles.

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)

Vite fait

GIMP et voilà !

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é.

convert

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

Extraire au format PDF des pages d'un document PDF

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 :

Certaines solutions proposées sur internet entraînent des dégradations importantes. Cette dégradation peut intervenir aussi bien lors de l'extraction de chaque page du document initial qu'à la recomposition et réencodage du (des) fichier(s) résultant(s).

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.

Extraire les images d'un PDF

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.

Image au format CCITT

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%
Dans ce cas, je recommande vivement d'utiliser GIMP ou convert comme indiqué précédemment dans la section «Vite fait».

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

Plusieurs images

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
1)
Toute l'information (au sens de la théorie de l'information) est présente et accessible.
2)
Ou moins usuels… convert peut également effectuer la conversion inverse.
3)
Lorsqu'un outil propose autant de combinaisons que pdftk, il n'est pas rare que les interfaces graphiques proposées soient moins simples à utiliser que la ligne de commande, même pour des débutantes.
4)
Notamment si elle a été générée par un scanner-fax.
5)
Présente dans le paquetage libtiff-tools.
6)
Dans le cas d'un scanner-fax, chaque page contient une image.