Wie kann man mehrere PDF-Dateien mit pdftk auf einer Seite zusammenführen?

89460
Alex Reynolds

Ich habe eine Reihe von PDF - Dateien 1.pdf, 2.pdfusw., die Ich mag würde in einer Datei zusammenführen, mit allen auf einer Seite gekachelten PDFs.

Momentan habe ich versucht pdftk, diese Dateien zusammenzuführen, aber sie werden auf separaten Seiten abgelegt:

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

Gibt es eine Möglichkeit, stattdessen die einzelnen PDF-Dateien auf einer Masterseite zu kacheln merged.pdf?

32
In Fällen, in denen die Verwendung einer GUI-App in Ordnung ist, ist http://www.pdfsam.org/ eine gute Alternative. reinierpost vor 12 Jahren 1
Haben Sie eine Antwort gefunden? Léo Léopold Hertz 준영 vor 7 Jahren 0

8 Antworten auf die Frage

26
Ole Tange

Ich habe das heute getestet:

pdfjam Page1.pdf Page2.pdf --nup 2x1 --landscape --outfile Page1+2.pdf 

Es werden 2 Seiten auf eine Seite gesetzt.

funktioniert auch unter Windows (mit [wsl] (https://msdn.microsoft.com/de-de/commandline/wsl/install_guide)) `sudo apt-get install pdfjam` jan-glx vor 7 Jahren 0
Wenn Sie Seiten vertikal verkleben möchten, verwenden Sie `--nup 1x2 --no-landscape` jan-glx vor 7 Jahren 3
Wenn Sie keine automatische Skalierung von Seiten wünschen (die Ausgabe von Mine dehnt sich standardmäßig auf a4 aus), verwenden Sie --noautoscale true Jonathan Y. vor 6 Jahren 0
6
micke

Das auf pdfLaTeX basierende pdfnup könnte für Sie funktionieren. Wenn Sie viele PDF-Dateien haben, müssen Sie möglicherweise eine lange Pipe von pdfjam machen oder mehrmals ausführen.

Es gibt auch pdfnup in Python .

3
Nik

Nicht sicher, was du damit meinst tiled on one page. Ich habe nach einer Möglichkeit gesucht, mehrere PDFs auf einer Seite zusammenzuführen - und zwar auf einer anderen. Dies kann pdftkwie folgt gemacht werden:

pdftk foreground.pdf background background.pdf output merged.pdf

3
anonymous

Dieses Skript wird die PDF-Seiten für Sie anordnen. Ändern Sie das Slice in das, was Sie pro Seite benötigen.

#!/usr/bin/ruby  latexhead = <<'EOF' \documentclass \usepackage[pdftex] \usepackage[margin=0.1in] \usepackage \begin EOF latextail = <<'EOF' \end EOF  pages = %x[pdfinfo #].split(/\n/).select{|x| x=~ /Pages:/}[0].split(/\s+/)[1].to_i puts latexhead s = (1..pages).each_slice(4).to_a s.each do |a| puts "\\begin" a.each do |p| puts "\\includegraphics[page=#,scale=0.4,width=.5\\textwidth]{#}" end puts "\\end" end puts latextail 
2
Cesco

Sie können die Montage von ImageMagick verwenden

$ montage *.pdf merged.pdf 

Siehe auch http://www.imagemagick.org/script/montage.php

ImageMagick-Montage behandelt vektorisierte Bilder und Schriftarten nicht richtig. Daher kann die Ausgabe des Montagebefehls unscharf aussehen. Siehe auch die Erklärung hier: http://superuser.com/a/479767/149568 Benedikt Köppel vor 11 Jahren 11
0
szemek

Wenn Dateinamen in "systemspezifischer" Reihenfolge sind, pdftk *.pdf cat output merged.pdfsollte dies einwandfrei funktionieren.

Hier meine ich "systemspezifische" Reihenfolge.

Beispiel:
Ich habe 3 Dateien auf meinem Ubuntu 11.04: 1.pdf, 2.pdf, 10.pdf Die
Dateien werden in der folgenden Reihenfolge zusammengeführt: 10.pdf 1.pdf 2.pdf ( ls -ldie gleiche Reihenfolge wie in der zusammengeführten Datei zurückgegeben)

Sicherste Namenskonvention: 0001.pdf, 0002.pdf usw.

Wie bereits erwähnt, erstellt dieser Befehl eine mehrseitige PDF-Datei. Wie in meiner Frage ausgeführt, suche ich nach der Methode zur Verwendung von "pdftk", um eine einseitige PDF-Datei zu erstellen, die PDF-Eingabedateien als Kacheln enthält. Alex Reynolds vor 12 Jahren 1
Kombiniere meine Antwort mit @ Micke's. Ich habe nicht geprüft, ob pdfnup den Namen mit Platzhalterzeichen (* .pdf) als Argument annehmen kann. Sie können jedoch das von pdftk erzeugte pdf verwenden. Aktivieren Sie "pdfnup" oder "pdfjam" mit der Option "--nup". szemek vor 12 Jahren 0
Wenn Sie sie nicht zitieren, werden Platzhalterzeichen wie "*" um die von Ihnen verwendete Shell erweitert. `pdfnup` sieht nicht immer * .pdf`, sondern eine Liste aller Dateien im Arbeitsverzeichnis mit Dateinamen, die auf` .pdf` enden. evilsoup vor 10 Jahren 0
0
Keks Dose

Wenn Sie eine große Anzahl von PDFs in einer Ordnerstruktur haben und eine TeX-Installation haben, fügt dieses Skript alle PDFs rekursiv in eine große Datei ein:

 #!/bin/bash # # pdfdir OUTPUT_FILE # # produces one big PDF file of all PDF files in . # if [ $# -ne 1 ] || [ -z "$1" ]; then echo "Syntax: 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 exists already." exit 2 fi done cat >"$FILE.tex" <<EOF \documentclass% \usepackage% \usepackage% \listfiles% \begin% %\tableofcontents% EOF # helper functions exist_pdf_files () { [ $(find -L "$1" -name \*.pdf -o -name \*.PDF -type f 2>/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 with " 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 without " 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' } # current folder (lefel 0): list_pdf_files . >>"$FILE.tex" # Bearbeite Ebene 1: list_directories . | while read -r DIR1; do # Are there PDFs in folders below that level? exist_pdf_files "$DIR1" || continue # Yes ... tex_headline "\section{$}%" # those: list_pdf_files "$DIR1" # Level 2: list_directories "$DIR1" | while read -r DIR2; do exist_pdf_files "$DIR2" || continue tex_headline "\subsection{$}%" list_pdf_files "$DIR2" # Level 3: list_directories "$DIR2" | while read -r DIR3; do exist_pdf_files "$DIR3" || continue tex_headline "\subsubsection{$}%" list_pdf_files "$DIR3" # Level 4: list_directories "$DIR3" | while read -r DIR4; do exist_pdf_files "$DIR4" || continue tex_headline "\paragraph{$}%" list_pdf_files "$DIR4" # Level 5: list_directories "$DIR4" | while read -r DIR5; do exist_pdf_files "$DIR5" || continue tex_headline "\subparagraph{$}%" list_pdf_files "$DIR5" done done done done done >>"$FILE.tex" echo "\end%" >>"$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" 

Ich habe diesen Code nicht geschrieben, ich habe ihn hier aus einer Diskussion erhalten: http://www.listserv.dfn.de/cgi-bin/wa?A2=ind1201&L=tex-dl&T=0&P=10771

Es ist sehr nützlich. Ich habe einige deutsche Kommentare ins Englische übersetzt.

Grüße, Alexander

0
Malcolm
  1. Speichern Sie die gewünschten Seiten in einem PDF-Dokument mit etwas wie Acrobat Pro.

  2. Dokument mit mehreren Seiten zu einer Seitenfunktion drucken, zurück zu einem PDF-Dokument.

Mehrere Seiten zu einer Seite. :-)

Ich sehe, dass Ihre Antwort kommentarlos abgelehnt wurde. Das ist nicht cool, aber es gibt sicherlich Möglichkeiten, Ihre Antwort zu verbessern. Verbessern Sie die Grammatik, fügen Sie oben eine Beschreibung hinzu, warum Sie dies tun usw. vor 7 Jahren 0
Diese Antwort hat sich nur befürwortet - nur, weil Downvotes ohne Kommentar IMO nicht cool sind! Jeremy Davis vor 6 Jahren 0