Bagaimana cara menggabungkan beberapa file PDF ke dalam satu halaman dengan pdftk?

35

Saya memiliki berbagai file PDF 1.pdf, 2.pdfdll yang saya ingin menggabungkan menjadi satu file, dengan semua PDF ubin pada satu halaman.

Saat ini, saya telah mencoba pdftkuntuk menggabungkan file-file ini, tetapi mereka diletakkan di halaman terpisah:

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

Apakah ada cara untuk, sebagai gantinya, memasang setiap file PDF menjadi satu halaman master merged.pdf?

Alex Reynolds
sumber
1
Dalam kasus di mana menggunakan aplikasi GUI tidak apa-apa, alternatif yang bagus adalah pdfsam.org
reinierpost
1
Sudahkah Anda menemukan jawaban untuk diterima?
Léo Léopold Hertz 준영
Tautan ini: verypdf.com/wordpress/201302/… menunjukkan VeryPDF PDF Stitcher dapat melakukan pekerjaan secara vertikal atau menyamping. Unduh di: verypdf.com/app/pdf-stitch/index.html
Zimba

Jawaban:

29

Saya menguji ini hari ini:

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

Ini menempatkan 2 halaman di satu halaman.

Ole Tange
sumber
bekerja di bawah windows juga (dengan wsl )sudo apt-get install pdfjam
jan-glx
4
jika Anda ingin merekatkan halaman secara vertikal, gunakan--nup 1x2 --no-landscape
jan-glx
Jika Anda tidak menginginkan penskalaan halaman secara otomatis (hasil peregangan tambang mengisi a4 secara default), gunakan--noautoscale true
Jonathan Y.
Pertanyaannya adalah bertanya tentang pdftk, bukan pdfjam. Ini tidak menjawab pertanyaan; itu saran untuk menemukan alternatif
Zimba
6

The PDFLatex berdasarkan pdfnup mungkin bekerja untuk Anda. Jika Anda memiliki banyak file pdf, Anda mungkin perlu membuat pipa panjang pdfjam atau menjalankannya beberapa kali.

Ada juga pdfnup dalam python .

micke
sumber
4

Tidak yakin dengan apa yang Anda maksud tiled on one page. Saya sedang mencari cara untuk menggabungkan banyak PDF pada satu halaman - di atas yang lain. Ini bisa dilakukan dengan pdftkseperti ini:

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

Nik
sumber
3

Script ini akan memasang halaman pdf untuk Anda. Ubah irisan menjadi apa yang Anda butuhkan per halaman.

#!/usr/bin/ruby

latexhead = <<'EOF'
\documentclass{article}
\usepackage[pdftex]{graphicx}
\usepackage[margin=0.1in]{geometry}
\usepackage{pdfpages}
\begin{document}
EOF
latextail = <<'EOF'
\end{document}
EOF

pages = %x[pdfinfo #{ARGV[0]}].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{figure}"
  a.each do |p|
    puts "\\includegraphics[page=#{p},scale=0.4,width=.5\\textwidth]{#{ARGV[0]}}"
  end
  puts "\\end{figure}"
end
puts latextail
anonim, tanpa nama
sumber
1

Anda dapat menggunakan montase dari ImageMagick

$ montage *.pdf merged.pdf

lihat juga http://www.imagemagick.org/script/montage.php

Cesco
sumber
13
Montage ImageMagick tidak akan menangani gambar dan font vektor dengan benar. Akibatnya, output dari perintah montage mungkin terlihat buram. Lihat juga penjelasannya di sini: superuser.com/a/479767/149568
Benedikt Köppel
Ini TIDAK menjawab pertanyaan, yang menanyakan tentang pdftk
Zimba
0

Jika nama file berada dalam urutan "spesifik sistem", maka itu pdftk *.pdf cat output merged.pdfakan berfungsi dengan baik.

Inilah yang saya maksud dengan pesanan "sistem spesifik".

Contoh:
Saya punya 3 file di Ubuntu 11.04 saya: 1.pdf, 2.pdf, 10.pdf
File digabung secara berurutan: 10.pdf 1.pdf 2.pdf ( ls -lmengembalikan urutan yang sama seperti dalam file yang digabungkan)

Konvensi penamaan teraman: 0001.pdf, 0002.pdf, dll.

szemek
sumber
1
Seperti yang saya nyatakan, perintah ini membuat PDF multi-halaman. Seperti yang dinyatakan dalam pertanyaan saya, saya mencari metode menggunakan pdftkuntuk membuat satu halaman PDF yang berisi input PDF sebagai ubin.
Alex Reynolds
Kombinasikan jawaban saya dengan @ micke. Saya belum memeriksa apakah pdfnup dapat mengambil nama dengan wildcard (* .pdf) sebagai argumen, tetapi Anda dapat menggunakan pdf yang dihasilkan oleh pdftk. Periksa pdfnupatau pdfjamdengan --nupopsi.
szemek
Kecuali Anda mengutipnya, wildcard like *diperluas oleh shell yang Anda gunakan. pdfnuptidak pernah melihat *.pdf, melainkan melihat daftar setiap file di direktori kerja dengan nama file berakhiran .pdf.
evilsoup
0

Jika Anda memiliki sejumlah besar PDF dalam satu foldertruktur, dan Anda memiliki Instalasi TeX, skrip ini menempatkan semua PDF secara berulang ke dalam satu file besar:

    #!/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{article}%
\usepackage{pdfpages}%
\usepackage{grffile}%
\listfiles%
\begin{document}%
%\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{${DIR1##*/}}%"
  # those:
  list_pdf_files "$DIR1"
  # Level 2:
  list_directories "$DIR1" | while read -r DIR2; do
    exist_pdf_files "$DIR2" || continue
    tex_headline "\subsection{${DIR2##*/}}%"
    list_pdf_files "$DIR2"
    # Level 3:
    list_directories "$DIR2" | while read -r DIR3; do
      exist_pdf_files "$DIR3" || continue
      tex_headline "\subsubsection{${DIR3##*/}}%"
      list_pdf_files "$DIR3"
      # Level 4:
      list_directories "$DIR3" | while read -r DIR4; do
        exist_pdf_files "$DIR4" || continue
        tex_headline "\paragraph{${DIR4##*/}}%"
        list_pdf_files "$DIR4"
        # Level 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"

Saya belum menulis kode itu, saya mendapatkannya dari diskusi di sini: http://www.listserv.dfn.de/cgi-bin/wa?A2=ind1201&L=tex-dl&T=0&P=10771

Ini sangat berguna. Saya telah menerjemahkan beberapa komentar bahasa Jerman ke dalam bahasa Inggris.

Salam, Alexander

Keks Dosis
sumber
-1
  1. Simpan halaman yang diinginkan ke dokumen pdf dengan sesuatu seperti Acrobat Pro.

  2. Cetak dokumen menggunakan beberapa halaman ke fitur halaman, kembali ke dokumen pdf.

Banyak halaman menjadi satu halaman. :-)

Malcolm
sumber
Saya melihat jawaban Anda diturunkan tanpa komentar. Itu tidak keren, tetapi pasti ada cara untuk meningkatkan jawaban Anda. Tingkatkan tata bahasanya, tambahkan deskripsi ke atas mengapa Anda melakukan ini, dll.
diputuskan jawaban ini - hanya karena downvotes tanpa komentar bukanlah IMO keren!
Jeremy Davis
1
Diturunkan karena subjek mengatakan "dengan pdftk". Jawaban Anda mungkin bukan di luar topik, tetapi jelas bukan apa yang dicari si penanya.
Nik