48 votes

Comment fusionner plusieurs fichiers PDF sur une page avec pdftk ?

J'ai une série de fichiers PDF 1.pdf, 2.pdf, etc. que j'aimerais fusionner en un seul fichier, avec tous les PDF tuilés sur une seule page.

Actuellement, j'ai essayé pdftk pour fusionner ces fichiers, mais ils sont placés sur des pages séparées :

pdftk 1.pdf 2.pdf ... cat output merged.pdf

Y a-t-il un moyen, au lieu de cela, de tuiler les fichiers PDF individuels sur une seule page maîtresse sur merged.pdf ?

0voto

Hannson Points 2165

Si les noms de fichiers sont dans un ordre "spécifique au système", alors pdftk *.pdf cat output merged.pdf devrait fonctionner très bien.

Voici ce que je veux dire par ordre "spécifique au système".

Exemple :
J'ai 3 fichiers sur mon Ubuntu 11.04 : 1.pdf, 2.pdf, 10.pdf
Les fichiers sont fusionnés dans l'ordre : 10.pdf 1.pdf 2.pdf (ls -l a renvoyé le même ordre que dans le fichier fusionné)

Convention de nommage la plus sûre : 0001.pdf, 0002.pdf, etc.

0voto

Keks Dose Points 263

Si vous avez un grand nombre de fichiers PDF dans une structure de dossiers, et que vous avez une installation TeX, ce script met tous les PDF récursivement dans un seul grand fichier :

    #!/bin/bash
#
# pdfdir OUTPUT_FILE
#
# produit un seul grand fichier PDF de tous les fichiers PDF dans .
#
if [ $# -ne 1 ] || [ -z "$1" ]; then
  echo "Syntaxe : pdfdir OUTPUT_FILE"
  exit 1
fi
FILE="$(echo "$1"|sed -e 's/\.\(pdf\|tex\)$//')"
for F in "$FILE" "$FILE.tex" "$FILE.pdf" "$FILE.aux" "$FILE.log" ; do
  if [ -e "$F" ]; then
    echo "$F existe déjà."
    exit 2
  fi
done
cat >"$FILE.tex" </dev/null|wc -l) -eq 0 ] && return 1
  return 0
}
list_directories () {
  find -L "$1" -maxdepth 1 -mindepth 1 -type d 2>/dev/null | sort
}
list_pdf_files () {
  # version avec " around filenames:
  #find -L "$1" -maxdepth 1 -mindepth 1 -name \*.pdf -o -name \*.PDF -type f 2>/dev/null | sort | \
  #  sed -e 's/^/\\includepdf[pages=-]{"/; s/$/"}%/'
  # version sans " around filenames:
  find -L "$1" -maxdepth 1 -mindepth 1 -name \*.pdf -o -name \*.PDF -type f 2>/dev/null | sort | \
    sed -e 's/^/\\includepdf[pages=-]{/; s/$/}%/'
}
tex_headline () {
    echo "$1" | sed -e 's/_/\\_/g'
}
# dossier actuel (niveau 0) :
list_pdf_files . >>"$FILE.tex"
# Traiter le niveau 1 :
list_directories . | while read -r DIR1; do
  # Y a-t-il des PDF dans des dossiers en dessous de ce niveau?
  exist_pdf_files "$DIR1" || continue
  # Oui ...
  tex_headline "\section{${DIR1##*/}}%"
  # ceux-là :
  list_pdf_files "$DIR1"
  # Niveau 2 :
  list_directories "$DIR1" | while read -r DIR2; do
    exist_pdf_files "$DIR2" || continue
    tex_headline "\subsection{${DIR2##*/}}%"
    list_pdf_files "$DIR2"
    # Niveau 3 :
    list_directories "$DIR2" | while read -r DIR3; do
      exist_pdf_files "$DIR3" || continue
      tex_headline "\subsubsection{${DIR3##*/}}%"
      list_pdf_files "$DIR3"
      # Niveau 4 :
      list_directories "$DIR3" | while read -r DIR4; do
        exist_pdf_files "$DIR4" || continue
        tex_headline "\paragraph{${DIR4##*/}}%"
        list_pdf_files "$DIR4"
        # Niveau 5 :
        list_directories "$DIR4" | while read -r DIR5; do
          exist_pdf_files "$DIR5" || continue
          tex_headline "\subparagraph{${DIR5##*/}}%"
          list_pdf_files "$DIR5"
        done
      done
    done
  done
done >>"$FILE.tex"
echo "\end{document}%" >>"$FILE.tex"
echo "Sourcecode to PDF directly [J/n]"
read -r ANSWER
case "$ANSWER" in
[JjYy]) ;;
*) exit 0 ;;
esac
pdflatex "$FILE"
[ $? -eq 0 ] && rm -f "$FILE.aux" "$FILE.log" "$FILE.tex"

Je n'ai pas écrit ce code, je l'ai obtenu dans une discussion ici : http://www.listserv.dfn.de/cgi-bin/wa?A2=ind1201&L=tex-d-l&T=0&P=10771

Il est très utile. J'ai traduit certains commentaires en allemand en anglais.

Cordialement, Alexander

0voto

Zimba Points 753

Ce lien : http://www.verypdf.com/wordpress/201302/how-to-combine-4-page-pdf-into-1-page-pdf-file-to-save-ink-and-papers-34505.html montre que VeryPDF PDF Stitcher peut faire le travail verticalement ou horizontalement. Téléchargez ici : http://www.verypdf.com/app/pdf-stitch/index.html

0voto

Frederick Nord Points 236

Désolé de ne pas répondre à votre question spécifique sur pdftk, mais puisque d'autres réponses existent pour montrer des alternatives, j'ai pensé intervenir et présenter encore une autre alternative.

Avec un système sur lequel poppler est installé, vous devriez avoir le pdfunite programme. Son utilisation est simple :

pdfunite foo.pdf bar.pdf   /tmp/output.pdf

-1voto

Malcolm Points 9
  1. Enregistrez les pages souhaitées dans un document pdf avec un logiciel tel qu'Acrobat Pro.

  2. Imprimez le document en utilisant la fonctionnalité plusieurs pages par page, pour obtenir à nouveau un document pdf.

Plusieurs pages sur une seule page. :-)

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X