Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 19/05/2016, à 18:27

loke

[RESOLU] PDF en CBR

Bonjour,

j’ai un tout petit script pour nautilus
qui me permet de transformer un pdf en cbr

#!/bin/sh
# Transforme les pdf en cbr
pdfimages -j *.pdf Images
rar a votre_archive.cbr *.jpg
rm *.jpg

mes problèmes :
- l’impossibilité de l’appliqué dans un dossier où il y a plusieurs pdf
- ne récupère pas le nom du pdf pour le mettre dans le cbr
- impossibilité de le rendre récursif au sous-dossier

si l’un d’entre vous a une solution à me proposer, je suis preneur
Merci de vos réponses éventuelles

Dernière modification par loke (Le 20/05/2016, à 11:06)

Hors ligne

#2 Le 19/05/2016, à 22:48

ares

Re : [RESOLU] PDF en CBR

Bonsoir loke,

Juste une question :
Quel est l’intérêt de transformer un "pdf" en "cbr" ?
Il y'a perte de toutes les infos (mot cles, index, sommaire, vignette, etc) qui font la particularité de ce format ISO.

@+

Hors ligne

#3 Le 20/05/2016, à 00:21

melixgaro

Re : [RESOLU] PDF en CBR

salut,
même remarque que ares sur le pourquoi de la conversion. (juste par curiosité, tu fais évidemment comme tu veux et selon tes besoins ;-))

proposition de script

#!/bin/bash
# Transforme les pdf en cbr
filename="${1}"
pdfimages -j "${filename}" "${filename/.pdf}"
rar a "${filename/.pdf/.cbr}" "${filename/.pdf}"*.jpg
echo rm "${filename/.pdf}"*.jpg

à enregistrer comme pdf2cbr.sh et à rendre exécutables ainsi

chmod u+x pdf2cbr.sh

à lancer ainsi

./pdf2cbr.sh /chemin/vers/le/fichier.pdf

Explication :
Ça va utiliser le nom du fichier pdf, pris en argument, à chaque étape pour essayer de ne pas mélanger les pommes et les poires ou effacer trop de jpg. En particulier, le fichier cbr produit aura le même nom que le fichier pdf, à l'extension près.
/!\ J'ai mis un "echo rm" pour que tu puisses tester et contrôler ce qui sera effacé. Si ça te semble bon, efface le echo ultérieurement.
/!\ Normalement, avec les ", il te sera possible de travailler avec des noms de fichier contenant des espaces. À vérifier si le cas se présente.
/!\ Adapte le chemin vers ton fichier pdf.

Pour la récurrence une solution simple serait :

for filename in /chemin/vers/tous/les/pdf/*.pdf; do echo ./pdf2cbr.sh "${filename}"; done

Là encore, note que j'ai mis un écho devant la commande pour que tu contrôles que la boucle va lancer le script sur les bons fichiers. Après test, efface le echo et relance la boucle for.

Dernière modification par melixgaro (Le 20/05/2016, à 00:56)


Linux depuis ~2007. Xubuntu seulement.

Hors ligne

#4 Le 20/05/2016, à 00:49

loke

Re : [RESOLU] PDF en CBR

Merci pour vos réponses,

Le but est de transformer des PDF en cbr pour pouvoir les lire sur komik sur android, je préfère ce mode de visionnage.

melixgaro j’ai testé ton scripte est il me retourne

./pdf2cbr.sh: 4: ./pdf2cbr.sh: Bad substitution

Dernière modification par loke (Le 20/05/2016, à 00:49)

Hors ligne

#5 Le 20/05/2016, à 00:56

melixgaro

Re : [RESOLU] PDF en CBR

ah oui désolé, c'est parce que j'ai utilisé des astuces bash qui ne sont pas connues par sh
il faut remplacer #!/binsh par #!/bin/bash
je modifie le post ci-dessus


Linux depuis ~2007. Xubuntu seulement.

Hors ligne

#6 Le 20/05/2016, à 09:02

ares

Re : [RESOLU] PDF en CBR

Bonjour,

loke a écrit :

Le but est de transformer des PDF en cbr pour pouvoir les lire sur komik sur android,(...)

Ok ! Mais ne pas ignorer les faiblesses de ce type de visionnage :
* perte de qualité à l'affichage
* plus lent sad
* fichier beaucoup plus volumineux sad

Le format "cbr" je l'utilise pour lire des "BDs"

Pour info des lecteurs pdf sous Android ---> ICI

@+

Hors ligne

#7 Le 20/05/2016, à 10:15

gigiair

Re : [RESOLU] PDF en CBR

melixgaro a écrit :

proposition de script

#!/bin/bash
# Transforme les pdf en cbr
filename="${1}"
pdfimages -j "${filename}" "${filename/.pdf}"
rar a "${filename/.pdf/.cbr}" "${filename/.pdf}"*.jpg
echo rm "${filename/.pdf}"*.jpg

Pourquoi ne pas enregistrer  les images dans un fichier temporaire que l'on peut supprimer après traitement ? Ça éviterait tout risque de collision avec des fichiers existants.
Je propose d'ajouter les lignes suivantes

#!/bin/bash
# Transforme les pdf en cbr
filename="${1}"
+REPTEMP=/tmp/$(mktemp pdf2cbrXXXX)
+REPACT=$(pwd)
+cd $REPTEMP
pdfimages -j "${filename}" "${filename/.pdf}"
rar a "${filename/.pdf/.cbr}" "${filename/.pdf}"*.jpg
+cp "${filename/.pdf/.cbr}" $REPACT
- echo rm "${filename/.pdf}"*.jpg

Aux erreurs de syntaxe près...

edit : J'ai commis un script que j'ai testé un peu plus loin. Comme ce n'est pas franchement un problème compliqué, il a des chances de fonctionner sans trop d'erreurs. Je ne suis pas un pro du scripting.

Dernière modification par gigiair (Le 20/05/2016, à 16:57)


--
JJR.

Hors ligne

#8 Le 20/05/2016, à 10:27

melixgaro

Re : [RESOLU] PDF en CBR

oui, ma proposition de script est clairement améliorable et peut être rendue plus robuste. je l'ai signalé dans mon premier message… merci d'avoir améloré cet aspect-là :-)


Linux depuis ~2007. Xubuntu seulement.

Hors ligne

#9 Le 20/05/2016, à 11:06

loke

Re : [RESOLU] PDF en CBR

Merci pour votre aide ça fait le travail parfaitement.

Merci ares pour ton lien, pour mes doc j’utiliser PDF Reader.

Les CBR je l’utilise plus pour les magasines.

Hors ligne

#10 Le 20/05/2016, à 16:53

gigiair

Re : [RESOLU] PDF en CBR

J'ai un peu revu le script, et surtout je l'ai testé.
Il y a peut-être quelques erreurs, mais je l'ai testé sur un fichier pdf avec des espaces dans le nom. Il marche.
Je l'ai testé aussi sur un fichier non-pdf ça  renvoie un message d'erreur.

l'archive crée, je l'ai visualisée avec evince-previewer avec succès.

#!/bin/bash
# ------------------------------------------------------------------
# Author: gigiair
# Version: $Id: pdf2chr.sh,v 0.0 2016/05/20 11:00:27 debjjr Exp
# Title pdf2chr.sh
# Description : Extrait les images jpg d'un fichier pdf et les archive dans un fichier chr
# ------------------------------------------------------------------

VERSION=001
SUBJECT=conversion
USAGE="pdf2chr.sh [options] <fichier-PDF>"

# --- Options processing -------------------------------------------
if [ $# == 0 ] ; then
    echo $USAGE
    exit 1;
fi

while getopts ":i:vh" optname
  do
    case "$optname" in
      "v")
        echo "Version $VERSION"
        exit 0;
        ;;
      "i")
        echo "-i argument: $OPTARG"
        ;;
      "h")
        echo $USAGE
        exit 0;
        ;;
      "?")
        echo " option inconnue $OPTARG"
        exit 0;
        ;;
      ":")
        echo "No argument value for option $OPTARG"
        exit 0;
        ;;
      *)
        echo " erreur inconnue dans le traitement des  options"
        exit 0;
        ;;
    esac
  done

shift $(($OPTIND - 1))

# --- Locks -------------------------------------------------------
LOCK_FILE=/tmp/$SUBJECT.lock
if [ -f "$LOCK_FILE" ]; then
   echo "Script is already running"
   exit
fi

trap "rm -f $LOCK_FILE" EXIT
touch $LOCK_FILE

# --- Body --------------------------------------------------------
#  SCRIPT LOGIC GOES HERE

RARCOMMAND="$(which rar) a"
PDFIMAGES=$(which pdfimages)

# Vérifions que le fichier fourni en argument est bien un pdf

MIMETYPE=$(file -ib "$1"|cut -d\; -f1)
PDFTYPE="application/pdf"

if [[ "$MIMETYPE" != $PDFTYPE  ]]; then
    echo "Le fichier \" $1 \" n'est probablement pas un fichier pdf"
    exit 0
fi    

# Nom du fichier :
FILENAME=$(realpath "$1")

# Nom de base sans extension :
FILENAMEBASE=$(basename "${FILENAME%.*}")


#  Répertoire temporaire dans /temp
REPTEMP=$(mktemp -d /tmp/pdf2cbrXXXX)

# images extraite dans $REPTEMP
$PDFIMAGES -j "$FILENAME" "$REPTEMP/$FILENAMEBASE"

# Création de l'archive
$RARCOMMAND "$FILENAMEBASE.cbr" "$REPTEMP/$FILENAMEBASE*.jpg"

# Un coup de balai dans /tmp
rm -rf $REPTEMP

# -----------------------------------------------------------------

Je me suis servi d'un modèle de script fourni par Emacs, la gestion des options et la gestion des appels multiples n'est pas de moi, mais du package templates.el


--
JJR.

Hors ligne

#11 Le 12/11/2017, à 14:13

UbLo697

Re : [RESOLU] PDF en CBR

Bonjour

Après l'avoir découverte, je déterre  cette discussion car je rencontre une difficulté  et souhaiterais une évolution.  Le seul soucis, c'est que je ne m'y connais en rien en scripting sad

1. Le script à la fin de la discussion fonctionne parfaitement même  en mettant *.pdf en variable cool La difficulté est que la solution est basée  sur rar qui est un produit payant qui se bloque au bout de 30 (?) Utilisations. Serait-il possible d'utiliser un logiciel libre ?

2. Le script fonctionne mais doit être  relancé  pour chaque fichier. Serait il possible qu'il prenne en compte tous les pdf du répertoire  dans lequel les scripts est installé  ?

Merci de vos réponses

@+

Hors ligne

#12 Le 12/11/2017, à 15:29

gigiair

Re : [RESOLU] PDF en CBR

UbLo697 a écrit :

Bonjour

Après l'avoir découverte, je déterre  cette discussion car je rencontre une difficulté  et souhaiterais une évolution.  Le seul soucis, c'est que je ne m'y connais en rien en scripting sad

Celui ci n'est pas vraiment difficile à comprendre.
Pour l'adapter à une autre version de rar, il suffit de changer la ligne 63

 RARCOMMAND=="$(which rar) a"

$(which rar) est une commande qui rennvoie l'URI de la commande rar, en général c'est /usr/bin/rar mais which permet au script de s'adapter à toutes les configurations disposant de la commande rar.
En définitive, $RARCOMMAND est équivalent à /usr/bin/rar a

Je ne connais pas d'équivalent libre à rar. D'après google il en existe, mais je suis étonné que Debian ou Ubuntu n'en propose pas.

Dernière modification par gigiair (Le 12/11/2017, à 16:48)


--
JJR.

Hors ligne

#13 Le 12/11/2017, à 22:31

UbLo697

Re : [RESOLU] PDF en CBR

Merci de la réponse.
Je viens de remplacer which rar par which zip sans succès.:(
@+

Hors ligne

#14 Le 15/11/2017, à 23:02

UbLo697

Re : [RESOLU] PDF en CBR

ET pourtant dans le gestionnaire de fichiers Gnome, si on fait un clic droit, nous avons bien une commande Compresser qui permet de créer un cbr. Quel est le programme utilisé ?
@+

Hors ligne