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 06/10/2020, à 20:27

ThierryM

Insertion d'une même page pdf entre autres pages d'un fichier pdf

Bonjour à tous et à toutes,

Je n'ai pas trouvé comment insérer entre chaque page d'un fichier pdf initial une même page pdf de manière à avoir page1, page verso, page2, page verso, page3, page verso, .... Par exemple, au départ j'ai un document de 25 pages (mais ce nombre sera variable) et au final je voudrais obtenir un document de 50 pages (en intercalant 25 fois la même page verso).
J'ai regardé avec PdfSam avec la fonction "Assemblage alterné" mais cela signifie qu'il me faudrait à chaque fois générer avant l'assemblage, un pdf avec autant de pages verso que de pages du document de départ.
Auriez-vous une solution pour réaliser cela (même via un script) ?
En vous remerciant pour vos éclairages, cordialement,

Thierry


Ubuntu 18.04 / portable ASUS Vivobook Pro 17 N705UD-GC081T

Hors ligne

#2 Le 06/10/2020, à 21:39

Zakhar

Re : Insertion d'une même page pdf entre autres pages d'un fichier pdf

Oui, il existe un outil pour manipuler les pdf en script... mais désolé me souvient plus du nom ! Une recherche avec ton moteur favori devrait t'aiguiller.


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#3 Le 07/10/2020, à 07:51

Sciensous

Re : Insertion d'une même page pdf entre autres pages d'un fichier pdf

en attendant mieux:pdfshuffler
tu ouvres 2 fois ton pdf et tu déplaces à la souris chaque page comme tu veux.
une fois fait tu sélectionnes tout et enregistrer sous...
cool

Édit: j'ai rapidement fait un petit script utilisant mutool (à installer par les dépôts si ce n'est fait), juste connaitre le nombre de pages du pdf et mettre les fichiers pdf dans un dossier dédié de ton choix, en ligne de commande tu te mets dans ce dossier et tu lances:

for f in *.pdf; do read -p "nb de pages pour $f: " n;p="1,1";x=2;while [ $x -le $n ];do p="$p,$x,$x";x=$((x+1));done;mutool convert -o "$f.pdf" "$f" $p; done

le résultat sera dans le nom.pdf.pdf

si tu t'y connais en script tu peux bien sur améliorer (lecture auto du nb de pages par exemeple)

ÉDIT: correction= noms entre "
(merci Kramis)

Dernière modification par Sciensous (Le 07/10/2020, à 20:40)


antiX 19 et 21 et Ubuntu 20.04 et 22.04
( sous LXDE et gnome-shell )

Hors ligne

#4 Le 07/10/2020, à 11:17

kamaris

Re : Insertion d'une même page pdf entre autres pages d'un fichier pdf

Tu peux utiliser pdfseparate pour séparer ton pdf en autant de pages, puis pdfunite pour concaténer à ta guise.
Il faut bien sûr scripter un peu pour préparer la suite de pdfs à concaténer à passer à pdfunite.

Hors ligne

#5 Le 07/10/2020, à 13:22

Sciensous

Re : Insertion d'une même page pdf entre autres pages d'un fichier pdf

@kamaris: sad ma ligne de commandes ne te plait pas ? Je l'aime bien surtout que mutool mérite d'être connu utilisé wink


antiX 19 et 21 et Ubuntu 20.04 et 22.04
( sous LXDE et gnome-shell )

Hors ligne

#6 Le 07/10/2020, à 13:50

kamaris

Re : Insertion d'une même page pdf entre autres pages d'un fichier pdf

Non, pas de problème, c'était une réponse à ThierryM smile
D'ailleurs je ne connais pas mutool, mais par contre il faudrait écrire mutool convert -o "$f.pdf" "$f" "$p" pour ne pas avoir de problèmes avec les espaces (ou autres) dans les noms de fichiers.

Hors ligne

#7 Le 07/10/2020, à 20:44

Sciensous

Re : Insertion d'une même page pdf entre autres pages d'un fichier pdf

corrigé pour les "
mais pas autour de $p car c'est chiffres+, uniquement: 1,1,2,2, ...ce qui permet de dédoubler chaque page wink

mutool est dans les dépots et mérite d'être connu car visionneur (mupdf) et utils (mutool) très performants


antiX 19 et 21 et Ubuntu 20.04 et 22.04
( sous LXDE et gnome-shell )

Hors ligne

#8 Le 08/10/2020, à 15:08

ThierryM

Re : Insertion d'une même page pdf entre autres pages d'un fichier pdf

Adieu a totes,
Merci d'avoir pris le temps de vous pencher sur mon problème et surtout pour l'indication de mupdf-tools que je découvre.
J'ai testé le script de Sciensous (merci beaucoup) mais il me produit 2 documents en doublant les pages. On part de 1,2,3,4,5,6 et on obtient 1,1,2,2,3,3,4,4,5,5,6,6 et même chose pour l'autre pdf.
Mais cela donne une idée de ce vers quoi il faut aller (je vais approfondir ma connaissance en scripts wink ).
Ce que je voudrais faire, serait de partir d'un document avec les pages 1,2,3,4,5,6 pour obtenir 1,A,2,A,3,A,4,A,5,A,6,A où A est la page de mon deuxième pdf.
Cordialement,

Thierry


Ubuntu 18.04 / portable ASUS Vivobook Pro 17 N705UD-GC081T

Hors ligne

#9 Le 08/10/2020, à 17:00

kamaris

Re : Insertion d'une même page pdf entre autres pages d'un fichier pdf

Je pars d'un pdf de 15 pages, avec une page à intercaler :

$ ls
page-à-intercaler.pdf  pdf-de-départ.pdf

Je sépare mon pdf de départ en ses 15 pages :

$ pdfseparate pdf-de-départ.pdf pdf-de-départ-%d.pdf 
$ ls
page-à-intercaler.pdf pdf-de-départ-10.pdf  pdf-de-départ-12.pdf  pdf-de-départ-14.pdf  pdf-de-départ-1.pdf  pdf-de-départ-3.pdf  pdf-de-départ-5.pdf  pdf-de-départ-7.pdf  pdf-de-départ-9.pdf
pdf-de-départ-11.pdf  pdf-de-départ-13.pdf  pdf-de-départ-15.pdf  pdf-de-départ-2.pdf  pdf-de-départ-4.pdf  pdf-de-départ-6.pdf  pdf-de-départ-8.pdf  pdf-de-départ.pdf

Je construits un tableau contenant la suite des pages que je veux dans mon pdf final :

$ pages=("pdf-de-départ-1.pdf"); for n in {2..15}; do pages+=("page-à-intercaler.pdf"); pages+=("pdf-de-départ-$n.pdf"); done

Et enfin, je concatène le tout :

$ pdfunite "${pages[@]}" pdf-final.pdf
$ ls
page-à-intercaler.pdf  pdf-de-départ-12.pdf  pdf-de-départ-15.pdf  pdf-de-départ-3.pdf  pdf-de-départ-6.pdf  pdf-de-départ-9.pdf
pdf-de-départ-10.pdf   pdf-de-départ-13.pdf  pdf-de-départ-1.pdf   pdf-de-départ-4.pdf  pdf-de-départ-7.pdf  pdf-de-départ.pdf
pdf-de-départ-11.pdf   pdf-de-départ-14.pdf  pdf-de-départ-2.pdf   pdf-de-départ-5.pdf  pdf-de-départ-8.pdf  pdf-final.pdf

Hors ligne

#10 Le 08/10/2020, à 18:40

Sciensous

Re : Insertion d'une même page pdf entre autres pages d'un fichier pdf

À mon tour: je change d'outil wink
mais aussi faisable avec mutool:

I="fichieràintercaler.pdf";for f in *.pdf; do read -p "nb de pages pour $f: " n;p="";x=1;while [ $x -le $n ];do p="$p A$x B1";x=$((x+1));done; pdftk A="$f" B="$I" cat $p output "$f.pdf";done

cool

avec mutool et merge:

I="fichieràintercaler.pdf";for f in *.pdf; do read -p "nb de pages pour $f: " n;p="";x=1;while [ $x -le $n ];do p="$p \"$f\" $x \"$I\"";x=$((x+1));done; mutool merge -o "$f.pdf" $p; done

si le fichier à intercaler contient plusieurs pages, pense à rajouter le numéro de la page voulu après son nom

Dernière modification par Sciensous (Le 08/10/2020, à 18:47)


antiX 19 et 21 et Ubuntu 20.04 et 22.04
( sous LXDE et gnome-shell )

Hors ligne

#11 Le 11/10/2020, à 23:03

ThierryM

Re : Insertion d'une même page pdf entre autres pages d'un fichier pdf

Adieu a totes,
Merci pour vos propositions.
Du coup, je me suis basé sur la commande de Sciensous pour créer le script ci-dessous à lancer dans un terminal. On suppose que les 2 pdf sont dans le même répertoire (et seulement eux). Il faut indiquer quel est le fichier qui servira pour les verso et c'est tout. Le nombre de pages est récupéré par la commande "qpdf". Contrairement au script de départ, la fusion n'est pas réalisée sur la page servant pour les verso.

#!/bin/bash
set -euo pipefail

ceDossier=$(pwd)
lesFichiers=("$ceDossier/"*.pdf )
PS3="Choisissez le pdf contenant le verso ou tapez 0 pour sortir : "
select file in "${lesFichiers[@]}"; do
    if [[ $REPLY == "0" ]]; then
        echo "Au revoir !" >&2
        exit
    elif [[ -z $file ]]; then
        echo "Choix erroné, recommencez" >&2
    else
        break
    fi
done
echo "Nom du pdf de la page à mettre au verso : $file"
fichier="${file##*/}"

I="$fichier"
for f in *.pdf; do
    if [[ "$f" != "$I" ]]; then
        nbPages=$(qpdf --show-npages "$f")
        p=""
        x=1
        while [ $x -le $nbPages ]; do
            p="$p A$x B1"
            x=$((x+1))
        done
        pdftk A="$f" B="$I" cat $p output "${f%%.*}_verso.pdf"
    fi
done
echo "Fichier avec les verso créé."

Remarque :

  • Le nom du fichier fusionné portera la mention "_verso" à la fin.

  • Je n'ai pas réussi à faire fonctionner la 2e solution avec mutool et merge.

Encore merci à vous 2 pour toute votre aide !
Cordialement,

Thierry

Edition du 13/10/2020 pour corriger selon la proposition de Kamaris ci-dessous.

Dernière modification par ThierryM (Le 13/10/2020, à 12:59)


Ubuntu 18.04 / portable ASUS Vivobook Pro 17 N705UD-GC081T

Hors ligne

#12 Le 13/10/2020, à 08:25

kamaris

Re : Insertion d'une même page pdf entre autres pages d'un fichier pdf

[[ -z lesFichiers ]]

sera toujours faux, car ça teste si la chaine de caractères lesFichiers est vide.

[[ -z $lesFichiers ]]

n'irait pas non plus, car ça ne teste que la vacuité du premier élément du tableau.
Il faut faire au choix

[[ -z ${lesFichiers[*]} ]]
(( ${#lesFichiers[@]} ))

Hors ligne

#13 Le 13/10/2020, à 11:46

ThierryM

Re : Insertion d'une même page pdf entre autres pages d'un fichier pdf

Merci Kamaris pour la correction.
Sous Ubuntu 18.04, seule cette ligne fonctionne :

(( ${#lesFichiers[@]} ))

J'ai corrigé le script plus haut pour tenir compte de ta proposition.
Cordialement,

Thierry

Dernière modification par ThierryM (Le 13/10/2020, à 11:50)


Ubuntu 18.04 / portable ASUS Vivobook Pro 17 N705UD-GC081T

Hors ligne

#14 Le 13/10/2020, à 11:51

kamaris

Re : Insertion d'une même page pdf entre autres pages d'un fichier pdf

Je pense que les deux doivent marcher, mais en fait je n'ai pas précisé que

[[ -z ${lesFichiers[*]} ]]

est vrai si le tableau est vide, tandis que

(( ${#lesFichiers[@]} ))

est vrai s'il est non vide.

Donc j'aurais dû écrire

[[ -z ${lesFichiers[*]} ]]
(( ${#lesFichiers[@]} == 0 ))

ou autre combinaison équivalente.

Hors ligne

#15 Le 13/10/2020, à 12:03

ThierryM

Re : Insertion d'une même page pdf entre autres pages d'un fichier pdf

En fait aucune des propositions ne fonctionnent.
Avec l'instruction (( ${#lesFichiers[@]} )), j'ai toujours "Choix erroné" qui s'affiche.


Ubuntu 18.04 / portable ASUS Vivobook Pro 17 N705UD-GC081T

Hors ligne

#16 Le 13/10/2020, à 12:46

kamaris

Re : Insertion d'une même page pdf entre autres pages d'un fichier pdf

Eh bien oui, parce que c'est toujours vrai big_smile
Mais surtout, je me rends compte en regardant mieux que ce n'est probablement pas ça que tu veux tester, mais plutôt la vacuité de file :

elif [[ -z $file ]]; then

Dernière modification par kamaris (Le 13/10/2020, à 12:47)

Hors ligne

#17 Le 13/10/2020, à 13:00

ThierryM

Re : Insertion d'une même page pdf entre autres pages d'un fichier pdf

C'est exactement ça !
Merci, ça fonctionne correctement désormais.


Ubuntu 18.04 / portable ASUS Vivobook Pro 17 N705UD-GC081T

Hors ligne