====== 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é :
- le PDF ne contient rien d'autre qu'une photo encodée en jpeg,
- 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 [[https://fr.wikipedia.org/wiki/Rast%C3%A9risation|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 atteignable((Toute l'information (au sens de la théorie de l'information) est présente et accessible.))
===== 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 [[https://www.gimp.org/fr/|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 [[https://fr.wikipedia.org/wiki/Raster_Image_Processor|ripper]] les PDF pour les convertir en images aux formats usuels((Ou moins usuels… //convert// peut également effectuer la conversion inverse.)). 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 :
* un seul fichier PDF contenant toutes les pages à convertir,
* autant de fichiers PDF que de pages à extraire pour conversion.
Certaines solutions proposées sur internet entraînent des [[https://www.linuxjournal.com/content/tech-tip-extract-pages-pdf|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 [[https://debian-facile.org/doc:editeurs:pdftk|"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 chance((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.)) en utilisant [[http://pdfchain.sourceforge.net/|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 [[https://www.cyberciti.biz/faq/easily-extract-images-from-pdf-file/|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 ((Notamment si elle a été générée par un scanner-fax.)). 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|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 //fax2tiff//((Présente dans le paquetage //libtiff-tools//.)). 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//: [[https://askubuntu.com/a/1456901|What can be used to open .ccitt files?]]
Si le fichier PDF contient plusieurs images de ce type((Dans le cas d'un scanner-fax, chaque page contient une image.)), 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