Pdf2cbz
| Ce wiki a été archivé en 2018.
Le nouveau wiki se trouve à: ressources.labomedia.org Les fonctionnalités sont désactivées: vous pouvez faire une recherche sur Google site:https://wiki.labomedia.org et découvrir La Labomedia. |
De Centre de Ressources Numériques - Labomedia
Petit Script perso pour convertir des .PDF en archives .CBZ en bash (par JO) :
Sommaire
Déroulement du script
- listing de tous les pdf du répertoire
- création d'un répertoire temporaire du même nom que le .PDF
- extraction du .PDF page par page en fichiers .JPG dans le répertoire temporaire précédemment créé
- compression du répertoire au format .CBZ
- suppresion du répertoire temporaire
Configurations disponibles
- DPI_CONVERT Qualité DPI du scan lors de la convertion (à augmenter pour améliorer le rendu des textes)
- JPG_MAX_SIZE Taille max des images .JPG générés
- JPG_QUALITY Qualité de la compression .JPG permetttant de réduire le poids final de l'archive (0=grosse compression, 100=aucune compression)
- PROGRESS_BAR_WIDTH=20 Largeur de la barre de progression du script
Installation du script
Copiez simplement le script dans le dossier contenant vos .PDF et pensez à le rendre executable :chmod +x pdf2cbz.sh
Le Script en question
#!/bin/bash
#######################################################################
#
# Conversion de tous les .PDF d'un répertoire en archives .CBZ
#
########################################################################
# Qualité DPI du scan de la conversion (augmenter pour améliorer le scan)
DPI_CONVERT=300
# Taille max des images .JPG. Exemple de taille optimale pour le format
# A4 en fonction du DPI : http://www.format-papier-a0-a1-a2-a3-a4-a5.fr
#
# 300DPI = 2480x3508
# 200DPI = 1654x2339
# 100DPI = 827x1170
# 72DPI = 596x842
JPG_MAX_SIZE=2480x3508
# Qualité de la compression .JPG (0=grosse compression, 100=aucune compression)
JPG_QUALITY=75
# Largeur de la barre de progression
PROGRESS_BAR_WIDTH=20
########################################################################
#
# NE PAS TOUCHER AU RESTE DU CODE SAUF SI VOUS SAVEZ CE QUE VOUS FAITE !
#
########################################################################
########################################################################
#
# Fonctions du script
#
########################################################################
show_progress_bar() {
# Calcul le nombre de casee remplie/vide de la barre de progression
progress=$(echo "$PROGRESS_BAR_WIDTH/$pages*$page" | bc -l)
fill=$(printf "%.0f\n" $progress)
if [ $fill -gt $PROGRESS_BAR_WIDTH ]; then
fill=$PROGRESS_BAR_WIDTH
fi
empty=$(($fill-$PROGRESS_BAR_WIDTH))
# Calcul des pourcentage
percent=$(echo "100/$pages*$page" | bc -l)
percent=$(printf "%0.2f\n" "$percent")
if [ $(echo "$percent>100" | bc) -gt 0 ]; then
percent="100.00"
fi
# Affichage
printf "\r# ["
printf "%${fill}s" '' | tr ' ' '#'
printf "%${empty}s" '' | tr ' ' ' '
printf "] $percent%% - $show_text "
}
########################################################################
#
# Déroulement du script
#
########################################################################
echo ""
echo "### CONVERSION DE TOUS LES .PDF DU RÉPERTOIRE EN ARCHIVES .CBZ"
export LC_NUMERIC="en_US.UTF-8"
for pdf in *.pdf; do
echo "#"
echo "# CONVERSION : \"$pdf\""
echo "# - création du répertoire : \"${pdf%.*}\""
mkdir "${pdf%.*}"
pages=$(strings < "$pdf" | sed -n 's|.*/Count -\{0,1\}\([0-9]\{1,\}\).*|\1|p' | sort -rn | head -n 1)
# nombre de pages incorrecte, on essait avec pdfinfo
if [ -z "$pages" ]; then
pages=$(pdfinfo "$pdf" | grep Pages | awk '{print $2}')
fi
page=0
echo "# - extraction du PDF : \"$pdf\" ($pages pages)"
while [ $page -lt $pages ]; do
show_text=$(echo "page $(( $page + 1 ))/$pages - $pdf")
show_progress_bar $pages $page $show_text
convert -quality $JPG_QUALITY -density $DPI_CONVERT -resize $JPG_MAX_SIZE\> "$pdf"["$page"] "${pdf%.*}"/P%07d.jpg;
page=$(( $page + 1 ))
done
printf "\r"; printf " %0.s" {0..100}; printf "\r";
echo "# - création de l'archive : \"${pdf%.*}.cbz\""
zip -r -q "${pdf%.*}.cbz" "${pdf%.*}"
echo "# - suppression du répertoire : \"${pdf%.*}\""
rm -r "${pdf%.*}"
done
exit 0