pdftkで複数のPDFファイルを1つのページにマージする方法は?


35

さまざまなPDFファイル1.pdf2.pdfなどがあり、それらを1つのファイルにマージし、すべてのPDFを1ページに並べて表示します。

現在、pdftkこれらのファイルをマージしようとしましたが、別のページに配置されています。

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

代わりに、個々のPDFファイルを1つのマスターページにタイル表示する方法はありますmerged.pdfか?


1
GUIアプリを使用しても問題ない場合、適切な代替手段はpdfsam.org
reinierpost

1
受け入れる答えを見つけましたか?
レオレオポルドヘルツ

このリンク:verypdf.com/wordpress/201302/…は、VeryPDF PDF Stitcherが垂直方向または横方向にジョブを実行できることを示しています。:でダウンロードverypdf.com/app/pdf-stitch/index.html
Zimba

回答:


29

今日これをテストしました:

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

1ページに2ページを配置します。


Windowsでも動作します(wslを使用sudo apt-get install pdfjam
jan-glx

4
ページを垂直方向に接着したい場合は、使用してください--nup 1x2 --no-landscape
jan-glx

あなたは、ページのない自動スケーリングを望んでいない場合には(私はデフォルトでA4を埋めるために、出力を伸ばし)、使用--noautoscale true
ジョナサン・Y.

1
質問は、pdfjamではなく、pdftkについて尋ねています。これは質問に答えません。代替案を見つけることをお勧めします
Zimba

6

pdfLaTeXベースのpdfnup役に立つかもしれません。pdfファイルがたくさんある場合は、pdfjamの長いパイプを作成するか、数回実行する必要があります。

pythonにpdfnupがあります。


4

の意味がわかりませんtiled on one page。私は、複数のPDFを1つのページに(別のページの上に)マージする方法を探していました。これは、次のようにして実行できますpdftk

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


3

このスクリプトは、pdfページをタイル表示します。スライスをページごとに必要なものに変更します。

#!/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

1

使用できます ImageMagickのモンタージュ

$ montage *.pdf merged.pdf

また見なさい http://www.imagemagick.org/script/montage.php参照してください


13
ImageMagickモンタージュは、ベクトル化された画像とフォントを適切に処理しません。その結果、モンタージュコマンドからの出力がぼやけて見える場合があります。こちらの説明もご覧ください:superuser.com/a/479767/149568
BenediktKöppel13年

1
これは、pdftkについて尋ねている質問、答えていない
Zimba

0

ファイル名が「システム固有」の順序にある​​場合、正常に機能するpdftk *.pdf cat output merged.pdfはずです。

「システム固有の」順序とは、次のとおりです。

例:
Ubuntu 11.04に3つのファイルがあります:1.pdf、2.pdf、10.pdf
ファイルは順番にマージされます:10.pdf 1.pdf 2.pdf(ls -lマージされたファイルと同じ順序を返します)

最も安全な命名規則:0001.pdf、0002.pdfなど


1
前述のとおり、このコマンドは複数ページのPDFを作成します。私の質問で述べたように、pdftk入力PDFをタイルとして含む1ページのPDFを作成する方法を探しています。
アレックスレイノルズ

私の答えと@mickeを組み合わせてください。pdfnupが引数としてワイルドカード(* .pdf)を使用して名前を取ることができるかどうかは確認していませんが、pdftkによって生成されたpdfを使用できます。チェックpdfnuppdfjam--nupオプション。
szemek

それらを引用しない限り、ワイルドカード*は使用しているシェルによって展開されます。pdfnup見ることはありませんが*.pdf、代わりに作業ディレクトリ内のすべてのファイルのリストとファイル名が.pdf
evilsoup

0

あなたは1 folderstructureでPDFファイルの多数を持っている、場合あなたはTeXのインストールを持って、このスクリプトは、すべてのPDFファイルを置くrecursivly一つの大きなファイルに:

    #!/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"

私はそのコードを書いていません、ここの議論からそれを得ました:http : //www.listserv.dfn.de/cgi-bin/wa?A2=ind1201&L=tex-dl&T=0&P=10771

とても便利です。ドイツ語のコメントを英語に翻訳しました。

よろしく、アレクサンダー



-1
  1. 必要なページをAcrobat ProなどのPDFドキュメントに保存します。

  2. 複数のページを使用してページ機能を使用してドキュメントを印刷し、PDFドキュメントに戻します。

複数ページから単一ページ。:-)


コメントなしであなたの答えがダウン投票されるのがわかります。それはクールではありませんが、答えを改善する方法は確かにあります。文法を改善し、これを行っている理由などの説明を上部に追加します。

この答えを支持しました-コメントのない下票はクールなIMOではないからです!
ジェレミーデイビス

1
件名が「with pdftk」であるため、ダウン投票。あなたの答えは話題にならないかもしれませんが、質問者が探しているものではありません。
ニック
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.