#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...
É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: ma ligne de commandes ne te plait pas ? Je l'aime bien surtout que mutool mérite d'être connu utilisé
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
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
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 ).
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
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
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
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