Pdf2cbz
De Centre de Ressources Numériques - Labomedia
Révision de 31 mai 2018 à 20:01 par MrJO (discussion | contributions) (Page créée avec « '''Petit Script perso pour convertir des .PDF en archives .CBZ en bash (par JO) :''' == Déroulement du script == # listing de tous les pdf du répertoire # création d'... »)
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