Linux – Créer des PDFs de vos mangas avec ImageMagick

Partager cet article

Temps estimé pour la lecture de cet article : 17 min

ImageMagick est un logiciel en ligne de commande. Il permet de réaliser de nombreuses manipulations d’images. Il propose une suite d’outils assez intéressants comme la mise à l’échelle, la modification de l’orientation, l’application d’un filtre et j’en passe. Il est possible d’utiliser ImageMagick depuis des langages comme le PHP, par exemple pour réaliser une miniature lors de l’upload d’un pdf.

Installation du logiciel ImageMagick

Pour récupérer l’outils sous linux, il suffit de faire un simple :

sudo apt install imagemagick

Création d’un pdf à partir de plusieurs images

Une fois l’installation effectuée, le plus dur est fait. On va donc appeler la commande convert du logiciel ImageMagick, elle permet d’effectuer des modifications sur une ou plusieurs images. On peut par exemple créer des gifs. Il suffit de faire :

convert -delay 100 -loop 0 *.jpg animation.gif
  • L’option -delay : permet de spécifier un temps de défilement entre les images en centièmes de seconde
  • L’option -loop : permet de préciser le nombre de boucles à effectuer, si l’option est à 0, c’est une lecture en continu

Ce qui nous donne par exemple :

ImageMagick - Scrat

Créer des PDFs grâce à ImageMagick

Pour ma part le but était de pouvoir lire mes mangas sur ma liseuse et ceci facilement. Je vais donc prendre en exemple un manga assez connu : Hajime no Ippo. Pourquoi celui-ci, tout simplement car il est possible de trouver les tomes non-licenciés en France sur ce site : hajime-no-ippo.net. On peut télécharger les tomes 69 à 85. Je vous propose d’en télécharger un ou en tout cas celui d’un manga que vous appréciez. Une fois l’archive téléchargée et extraite.

On peut directement utiliser la commande :

convert *.jpg myChapter.pdf

Toutefois, si on laisse cette option par défaut les pdfs peuvent prendre une taille assez colossale, en prenant l’exemple sur le tome 68 de HNI (Hajime no Ippo), j’arrive à 50 Mo, après la création du pdf.

Réduire la taille de nos PDFs

On va donc préciser l’option -resize x%, cela va nous permettre de modifier une image dont la taille va varier en fonction du pourcentage désiré. Par exemple un -resize 50%, va réduire de moitié la taille des images. Bien sur, si on précise un pourcentage trop fort cela peut amoindrir la qualité du pdf final, à vous de trouver le juste milieu entre poids et qualité. Ce qui nous donne :

convert *.jpg -resize 70% myChapter.pdf

Pour ma part, je convertis donc avec un resize de 70%, ce qui me donne des pdf de 20 Mo pour 170 pages.

Une petite fonction bash

Afin de simplifier la commande à rentrer, je me suis réalisé un script bash tout simple, que voici :

function imagestopdf() {
	count=`ls *.jpg 2>/dev/null | wc -l`
	if [ "$count" -gt 5 ] 
	then
		ext="jpg"
	else
		ext="png"
	fi
	convert "*.$ext" -resize 70% $1.pdf
}

Afin de ne pas avoir à préciser l’extension des fichiers (j’ai déjà vu télécharger des scans avec des extensions en png…), je compte le nombre d’éléments dont l’extension est .jpg, s’il y en a plus de 5 (normalement un scan, c’est au moins 7-8 pages), alors l’extension est bien jpg, sinon c’est du png. Enfin on lance la commande qu’on a vue plus tôt, en précisant le nom du fichier de sortie.

Maintenant pour créer votre pdf à partir de vos scans, il suffit de vous rendre dans le dossier désiré et de faire :

imagestopdf myScan.pdf

Mais, on peut encore améliorer le script :3 ! Si vous téléchargez plusieurs tomes d’un coup une vingtaine par exemple, ça va devenir très vite fastidieux, on peut éviter ça. Il suffit de placer tous nos tomes dans un dossier, on va alors itérer sur chaque tome et se servir du nom de celui-ci pour créer notre pdf. Voici donc ce que l’on va obtenir :

function imagestopdf() {
	for f in * 
	do
		echo "Traitement du futur pdf : $f" 
		count=`ls "$f"/*.jpg 2>/dev/null | wc -l`
		if [ "$count" -gt 1 ] 
		then
			ext="jpg"
		else
			ext="png"
		fi
		convert "$f/*.$ext" -resize 70% -set units PixelsPerInch "$f".pdf
	done
}

Il n’y a pas grand chose à dire, il suffit de lancer la commande imagestopdf dans le dossier et elle fera tout le boulot pour nous. Attention mine de rien, cela consomme pas mal de mémoire !

Faites-le transfert sur votre liseuse et bonne lecture 😀 !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.