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 30/01/2012, à 22:03

pierre.ramet

[script] découper un pdf double-page en simples pages

EDIT :
Pour faciliter la tâche aux intéressés, voici le script final que sputnick a réussi à créer, permettant ainsi de découper ce genre de pdf, et le rendre lisible par toutes les plateformes de lecture (kobo, kindle et autres...)
S'il y a n'importe quel problème, n'hésitez pas à laisser un commentaire dans ce sujet.

#!/bin/bash
#Script fait principalement par sputnick, avec l'aide de spiritus. 2012.
#Utilisation: A mettre dans un répertoire contenant tous vos pdfs

ebookdir=(lien absolu du répertoire contenant vos ebooks)
shopt -s nocaseglob nullglob extglob

rename 'y/ /_/' *.pdf
for f in *.pdf; do
    (
        file="${f}"
        dirnom="$(sed 's/.\{4\}$//' <<< "$file")"
        mkdir -p "$ebookdir/$dirnom/"
        mv "$file" "$ebookdir/$dirnom/"
        cd "$ebookdir/$dirnom/"
            pdftk "$file" burst

            for bursted in pg_[0-9][0-9][0-9][0-9].pdf; do
            pdfposter -p 2xa4 "$bursted" "page${bursted#pg}"
            done

            mv "$file" "$file.old"
            pdftk page*.pdf cat output "$file"
            rm !("$file"|"${file}.old")
    )
done
for files in */*.pdf; do
    (
        mv "$files" "$ebookdir"
    )
done
exit 0

Bonjour,

J'ai à ma disposition un nombre important de fichiers pdf, j'ai décidé de couper en deux chaque page de chaque fichier pdf, car ce sont des ebooks mais qui ont été scannés deux pages à la fois.
Je dois alors faire un script qui me permettra d'exécuter ces commandes:

  1. pdftk document.pdf burst : où document.pdf est n'importe ebook qui se trouve dans un dossier précis. Cette commande éclate le document en plusieurs fichiers pdf, chacun se composant d'une seule page.

  2. pdfposter -p 2xa4 page.pdf pagex.pdf : où page.pdf c'est les pages générées avant, (la syntaxe c pg_xxxx) et pagex.pdf c'est un fichier pdf qui se compose des deux pages séparées.

  3. pdftk *.pdf cat output final.pdf : commande qui fusionne tous les fichiers pdf présentes dans un dossier en un fichier final.pdf

Je suis un très grand débutant en matière de script, donc voilà ce que j'ai pu faire jusqu'à mnt :

#!/bin/bash

dir="pwd"
page=0

for file in $dir/*.pdf
do
    page=$(($page+1))
    pdfposter -p 2xa4 file%.pdf $page.pdf
done
exit 0

Script qui ne marche guère...
Je sollicite alors votre aide pour le faire marcher smile.

Merci beaucoup smile.

Dernière modification par pierre.ramet (Le 02/02/2012, à 02:33)


Ubuntu 12.04 LTS - Gnome Shell 3.4 - Holo Theme (Android ICS :o)

Hors ligne

#2 Le 30/01/2012, à 22:06

sputnick

Re : [script] découper un pdf double-page en simples pages

Salut,

voici :

#!/bin/bash

for file in *.pdf; do
    pdfposter -p 2xa4 "$file" "page_${file%.pdf}.pdf"
done

Edit: si tu sais pas trop coder, propose plutôt un truc en Français on appelle ça du pseudo-code. Ca sera plus propre. Bon là c'est simple, mais c'est une bonne habitude à prendre wink

CF : http://fr.wikipedia.org/wiki/Pseudo-code

Dernière modification par sputnick (Le 30/01/2012, à 22:23)


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#3 Le 30/01/2012, à 22:24

pierre.ramet

Re : [script] découper un pdf double-page en simples pages

Ah merci bcp, ça marche très bien merci smile
Vous auriez pas une idée pour optimiser encore une fois ce script, j'ai 70 ebooks, donc la tâche s’avérera fastidieuse sinon...
Est-ce qu'on peut d'abord, mettre chaque fichier dans un dossier, son nom, semblable à celui du fichier ?
Pour la première commande, vous auriez pas une commande, pour appliquer ce burst à *.pdf, et que les pages se forment dans leurs dossiers respectifs ?
Pour votre script, y a-t-il un moyen pour que les fichiers soient générés dans un nouveau sous-dossier ?
Et pour la dernière commande, une solution aussi ?

Dernière modification par pierre.ramet (Le 30/01/2012, à 22:25)


Ubuntu 12.04 LTS - Gnome Shell 3.4 - Holo Theme (Android ICS :o)

Hors ligne

#4 Le 30/01/2012, à 22:32

ludovic889

Re : [script] découper un pdf double-page en simples pages

(je t'ai déjà donné un script : tu peux t'en inspirer)

ah oui, je crois que tu peux faire pdfposter directement sur ton gros pdf

Dernière modification par ludovic889 (Le 30/01/2012, à 22:34)


Ce n'est pas grave de ne pas avoir l'heure si on a le temps.

Hors ligne

#5 Le 30/01/2012, à 22:50

pierre.ramet

Re : [script] découper un pdf double-page en simples pages

Oui, je comprends, c'est que je suis un débutant dans ce domaine, je te propose un script, peux-tu corriger les erreurs s'il y en a, sachant que je veux qu'il me crée un répertoire pour chaque fichier (nom semblable à celui du fichier), puis qu'il crée un répertoire dans chaque répertoire (nom : new_nom du repertoire), puis qu'il éclate chaque ebook dans son dossier, puis qu'il fasse la manip principale, en générant ces fichiers dans le dossier new.

for file in *.pdf; do
        mv "$file" --/ebooks/${file%}/
        mkdir --/ebooks/${file%}/new_${file%}/
        pdftk "$file" burst
        pdfposter -p 2xa4 "$file" /new_${file%}/${file%.pdf}.pdf"
done

Pour le regroupement des pdf, j'ai po su faire.


Ubuntu 12.04 LTS - Gnome Shell 3.4 - Holo Theme (Android ICS :o)

Hors ligne

#6 Le 30/01/2012, à 22:52

pierre.ramet

Re : [script] découper un pdf double-page en simples pages

Ah non, si seulement smile, c'est impossible, j'ai déjà essayé, cette manip est l'une des meilleures, je l'ai apprise de beaucoup de topics différents...


Ubuntu 12.04 LTS - Gnome Shell 3.4 - Holo Theme (Android ICS :o)

Hors ligne

#7 Le 30/01/2012, à 23:54

sputnick

Re : [script] découper un pdf double-page en simples pages

pierre.ramet a écrit :

Oui, je comprends, c'est que je suis un débutant dans ce domaine, je te propose un script, peux-tu corriger les erreurs s'il y en a, sachant que je veux qu'il me crée un répertoire pour chaque fichier (nom semblable à celui du fichier), puis qu'il crée un répertoire dans chaque répertoire (nom : new_nom du repertoire), puis qu'il éclate chaque ebook dans son dossier, puis qu'il fasse la manip principale, en générant ces fichiers dans le dossier new.

for file in *.pdf; do
        mv "$file" --/ebooks/${file%}/
        mkdir --/ebooks/${file%}/new_${file%}/
        pdftk "$file" burst
        pdfposter -p 2xa4 "$file" /new_${file%}/${file%.pdf}.pdf"
done

Pour le regroupement des pdf, j'ai po su faire.

Peux tu donner un exemple précis (ce à quoi tu t'attends comme resultat) au lieu du code ?


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#8 Le 30/01/2012, à 23:56

pierre.ramet

Re : [script] découper un pdf double-page en simples pages

Oui bien sûr, même si je l'ai expliqué plus haut, j'ai à ma disposition des ebooks, mais chaque page de ces ebooks est constitué de deux pages, posés horizontalement, je veux les séparer.


Ubuntu 12.04 LTS - Gnome Shell 3.4 - Holo Theme (Android ICS :o)

Hors ligne

#9 Le 31/01/2012, à 00:04

sputnick

Re : [script] découper un pdf double-page en simples pages

Non, je parles d'un tree view, comme ça par exemple :

├── abiword-2.8                                                                                                                                                                                            
│   ├── clipart                                                                                                                                                                                            
│   │   ├── book.png                                                                                                                                                                                       
│   │   ├── chip.png                                                                                                                                                                                       
│   │   ├── fun.png                                                                                                                                                                                        
│   │   ├── gear.png                                                                                                                                                                                       
│   │   ├── gnomea.png                                                                                                                                                                                     
│   │   ├── gnomeb.png                                                                                                                                                                                     
│   │   ├── gnomecorner.png                                                                                                                                                                                
│   │   ├── gnomec.png                                                                                                                                                                                     
│   │   ├── gnomedecor1.png                                                                                                                                                                                
│   │   ├── gnomedecor2.png                                                                                                                                                                                
│   │   ├── gnomed.png                                                                                                                                                                                     
│   │   ├── gnomee.png                                                                                                                                                                                     
│   │   ├── gnomeflowers.png                                                                                                                                                                               
│   │   ├── gnomeline.png                                                                                                                                                                                  
│   │   ├── idea.png                                                                                                                                                                                       
│   │   ├── lamp.png                                                                                                                                                                                       
│   │   ├── monitor.png                                                                                                                                                                                    
│   │   ├── music1.png                                                                                                                                                                                     
│   │   ├── pinceau.png                                                                                                                                                                                    
│   │   ├── simca.png                                                                                                                                                                                      
│   │   ├── surprise.png                                                                                                                                                                                   
│   │   ├── together.png                                                                                                                                                                                   
│   │   ├── toolbox.png                                                                                                                                                                                    
│   │   ├── tree.png                                                                                                                                                                                       
│   │   ├── tux_bordelais.png                                                                                                                                                                              
│   │   ├── weather.png                                                                                                                                                                                    
│   │   └── write.png                                                                                                                                                                                      
│   ├── mime-info                                                                                                                                                                                          
│   │   └── abiword.keys                                                                                                                                                                                   
│   ├── Presentation.xml                                                                                                                                                                                   
│   ├── readme.abw                                                                                                                                                                                         
│   ├── readme.txt                                                                                                                                                                                         
│   ├── strings                                                                                                                                                                                            
│   │   ├── am-ET.strings                                                                                                                                                                                  
│   │   ├── ar.strings                                                                                                                                                                                     
│   │   ├── ast-ES.strings                                                                                                                                                                                 
│   │   ├── ayc-BO.strings                                                                                                                                                                                 
│   │   ├── aym-BO.strings                                                                                                                                                                                 
│   │   ├── be-BY.strings                                                                                                                                                                                  
│   │   ├── bg-BG.strings                                                                                                                                                                                  
│   │   ├── br-FR.strings 
(...)

On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#10 Le 31/01/2012, à 00:12

pierre.ramet

Re : [script] découper un pdf double-page en simples pages

Comment je peux le générer ?


Ubuntu 12.04 LTS - Gnome Shell 3.4 - Holo Theme (Android ICS :o)

Hors ligne

#11 Le 31/01/2012, à 00:15

sputnick

Re : [script] découper un pdf double-page en simples pages

Peu importe, dessine + scan le si tu veut, ce qui compte c'est que ta demande soit claire sur le resultat attendu.

Tu peux faire la même chose avec les underscores "_" et les pipes "|" de ton clavier.

Pas besoin de 10 000 lignes, juste ce qu'il faut pour comprendre.

Edit: Sinon, la commande pour faire ça est tree, tu peux t'en servir apres avoir créé des répertoires avec mkdir et des fichiers vides (ou pas) avec touch

Dernière modification par sputnick (Le 31/01/2012, à 00:16)


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#12 Le 31/01/2012, à 00:29

pierre.ramet

Re : [script] découper un pdf double-page en simples pages


Ubuntu 12.04 LTS - Gnome Shell 3.4 - Holo Theme (Android ICS :o)

Hors ligne

#13 Le 31/01/2012, à 00:45

n3o51

Re : [script] découper un pdf double-page en simples pages

une question ce logiciel ne fait pas ce que tu veut

http://doc.ubuntu-fr.org/pdfsam


Welcome to the real world
________________________________

Hors ligne

#14 Le 31/01/2012, à 00:47

pierre.ramet

Re : [script] découper un pdf double-page en simples pages

Ah non je crois pas, je cherche à diviser les pages.
Voici un exemple http://s4.noelshack.com/upload/10767686 … 234631.png


Ubuntu 12.04 LTS - Gnome Shell 3.4 - Holo Theme (Android ICS :o)

Hors ligne

#15 Le 31/01/2012, à 01:06

sputnick

Re : [script] découper un pdf double-page en simples pages

#!/bin/bash

for file; do pdfposter -p 2xa4 "${file}" "${file%.pdf}"_page.pdf; done

Wallaa 8D



Edit: 9a s'utilise comme ça par exemple :

chmod +x pdfpostermass
cd Bibliothèque\ calibre
./pdfpostermass */*.pdf

Dernière modification par sputnick (Le 31/01/2012, à 01:10)


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#16 Le 31/01/2012, à 01:16

pierre.ramet

Re : [script] découper un pdf double-page en simples pages

Ah ben non, c'est le même script que m'a passé ludovic plus haut, ça marche, mais je veux qu'il fasse bcp plus que ça, c indiqué plus haut de le sujet.


Ubuntu 12.04 LTS - Gnome Shell 3.4 - Holo Theme (Android ICS :o)

Hors ligne

#17 Le 31/01/2012, à 01:45

sputnick

Re : [script] découper un pdf double-page en simples pages

Whaaa, quelles précisions !

Je t'ai dit de ne pas essayer de coder mais d'expliquer en Français... En donnant les commandes que tu veut passer et ce que tu attends que ça fasse.

C'est quand même pas trop demander ???


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#18 Le 31/01/2012, à 01:58

pierre.ramet

Re : [script] découper un pdf double-page en simples pages

J'excuse tes sarcasmes, car vraiment, j'ai TOUT expliqué plus haut, je vais le refaire, pas de problème :
Je dois alors faire un script qui me permettra d'exécuter ces commandes:

Tout d'abord, oublie l'arborescence que je t'ai montré avant, je vais regrouper tous les pdf dans un seul dossier.
Puis je veux que le script me crée un répertoire pour chaque fichier (son nom semblable à celui du fichier), puis qu'il éclate chaque document dans son dossier respectif, par éclater, je veux dire, créer des pdf constitués d'une page, cela par la commande suivante :

pdftk document.pdf burst

Puis je veux qu'il crée un répertoire dans chaque répertoire (nom : new_repertoire), puis qu'il applique cette commande :

pdfposter -p 2xa4 page.pdf /new_repertoire/pagex.pdf

page.pdf c'est les pages générées avant, et pagex.pdf, le fichier pdf qui se compose de deux pages séparées.

Après, je veux que ses nouveaux pdfs soient regroupés en un seul pdf, avec cette commande :

pdftk *.pdf cat output final.pdf

Ubuntu 12.04 LTS - Gnome Shell 3.4 - Holo Theme (Android ICS :o)

Hors ligne

#19 Le 31/01/2012, à 03:13

sputnick

Re : [script] découper un pdf double-page en simples pages

#!/bin/bash
# by sputnick 2012

ebookdir=./ebooks
shopt -s nocaseglob nullglob

for file; do
    (
        read filename dirname < <(sed -r 's@.*/((.*)\.pdf)$@\1 \2@i' <<< "$file")
        mkdir -p "$ebookdir/$dirname/"
        mv "$file"  "$ebookdir/$dirname/$filename"
        cd "$ebookdir/$dirname/"
        pdftk "$filename" burst
        for bursted in pg_[0-9][0-9][0-9][0-9].pdf; do
            pdfposter -p 2xa4 "$bursted" "page${bursted#pg}"
        done

        pdftk page*.pdf cat output final.pdf
    )
done

J'espère que ça te convient, car tu aurais du demander plutôt ce que tu voulait faire au lieu de proposer du code, cela aurait été plus simple...


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#20 Le 31/01/2012, à 13:36

pierre.ramet

Re : [script] découper un pdf double-page en simples pages

Merci énormement pour le script smile ! Il ne marche pas vraiment, probablement une petite erreur de syntaxe, ce que j'ai fait; c'est que j'ai créé un dossier /home/user/ebooks, et que j'ai mis ebookdir=/home/user/ebooks, c tout en fait, et le script n'a pas marché, je l'éxécute dans le terminal, il ne génère absolument rien, pour info, je l'exécute dans un dossier où il y a un seul fichier pdf.


Ubuntu 12.04 LTS - Gnome Shell 3.4 - Holo Theme (Android ICS :o)

Hors ligne

#21 Le 31/01/2012, à 17:59

sputnick

Re : [script] découper un pdf double-page en simples pages

sputnick a écrit :

Edit: 9a s'utilise comme ça par exemple :

chmod +x pdfpostermass
cd Bibliothèque\ calibre
./pdfpostermass */*.pdf

On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#22 Le 31/01/2012, à 18:23

pierre.ramet

Re : [script] découper un pdf double-page en simples pages

Wow ça marche très bien !
Je suis surpris car en cherchant sur internet aujourd'hui des alternatives, eh bien, elles sont très compliquées, alors que tu as réussi à faire quelque chose de très très léger et simple qui marche très très bien.

Merci énormement smile !

PS : Sinon y a-t-il un moyen de supprimer les fichiers pg_xxxx générées ? Pour ne se retrouver qu'avec le fichier final.pdf (et peut-il avoir le nom du fichier pdf initial ?)
Et je crois qu'il y a un petit problème, quand le nom de l'ebook a des espaces, on se retrouve avec deux ou trois fichier finals, bizarre...


Ubuntu 12.04 LTS - Gnome Shell 3.4 - Holo Theme (Android ICS :o)

Hors ligne

#23 Le 31/01/2012, à 19:13

sputnick

Re : [script] découper un pdf double-page en simples pages

#!/bin/bash
# by sputnick 2012
# utilisation : ./pdfpostermass */*.pdf

ebookdir=./ebooks

shopt -s nocaseglob nullglob extglob
prename 's@\s@_@' "$@"

for f; do
    (
        file="${f// /_}"
        read filename dirname < <(sed -r 's@.*/((.*)\.pdf)$@\1 \2@i' <<< "$file")
        mkdir -p "$ebookdir/$dirname/"
        mv "$file"  "$ebookdir/$dirname/$filename"
        cd "$ebookdir/$dirname/"
        pdftk "$filename" burst

        for bursted in pg_[0-9][0-9][0-9][0-9].pdf; do
            pdfposter -p 2xa4 "$bursted" "page${bursted#pg}"
        done

        mv "$filename" "${filename}.old"
        pdftk page*.pdf cat output "$filename"
        rm !("$filename"|"${filename}.old")
    )
done

Gère les espaces (renomme les " " avec des "_") et l'effacements des fichiers inutiles. (cette dernière tache, tu aurais pu le faire quand même smile )


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#24 Le 31/01/2012, à 19:15

pierre.ramet

Re : [script] découper un pdf double-page en simples pages

J'avoue, et je dois remplacer les espaces par des "_" n'est ce pas ?


Ubuntu 12.04 LTS - Gnome Shell 3.4 - Holo Theme (Android ICS :o)

Hors ligne

#25 Le 31/01/2012, à 19:21

sputnick

Re : [script] découper un pdf double-page en simples pages

Non, tout est automatique wink Verifie juste que prename est installé

Dernière modification par sputnick (Le 31/01/2012, à 19:21)


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne