pdftk를 사용하여 여러 PDF 파일을 한 페이지에 병합하는 방법은 무엇입니까?


35

나는 PDF 파일의 범위가 1.pdf, 2.pdf내가 한 페이지에 바둑판 식으로 모든 PDF 파일로, 하나 개의 파일에 병합하고 싶다고 등.

현재이 pdftk파일을 병합 하려고 시도했지만 별도의 페이지에 배치됩니다.

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

대신 개별 PDF 파일을 하나의 마스터 페이지로 바둑판 식으로 배열하는 방법이 merged.pdf있습니까?


1
GUI 앱을 사용해도 괜찮은 경우 좋은 대안은 pdfsam.org입니다.
reinierpost

1
수락 할 답변이 있습니까?
Léo Léopold Hertz 준영

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

한 페이지에 2 페이지를 넣습니다.


창에서도 작동합니다 ( wsl 사용 )sudo apt-get install pdfjam
jan-glx

4
페이지를 세로 --nup 1x2 --no-landscape
로 붙이

페이지의 자동 크기 조정을 원하지 않는 경우 (기본적으로 a4를 채우기 위해 출력이 늘어남)--noautoscale true
Jonathan Y.

1
문제는 pdfjam이 아니라 pdftk에 관한 것입니다. 이것은 질문에 대답하지 않습니다. 대안을 찾는 것이
좋습니다

6

pdfLaTeX 기반 pdfnup도움 이 될 수 있습니다. pdf 파일이 많은 경우 긴 pdfjam 파이프를 만들거나 여러 번 실행해야 할 수 있습니다.

python 에도 pdfnup 이 있습니다 .


4

의 의미가 확실하지 않습니다 tiled on one page. 한 페이지에 여러 PDF를 병합하는 방법을 찾고있었습니다. 이것은 다음과 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


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를 타일로 포함하는 한 페이지 PDF를 만드는 데 사용하는 방법을 찾고 있습니다.
Alex Reynolds

내 대답을 @ micke 's와 결합하십시오. pdfnup이 와일드 카드 (* .pdf)로 이름을 인수로 사용할 수 있는지 여부는 확인하지 않았지만 pdftk에 의해 생성 된 pdf를 사용할 수 있습니다. 확인 pdfnup또는 pdfjam--nup옵션을 선택합니다.
szemek

인용하지 않는 한 와일드 카드와 같은 와일드 카드 *는 사용중인 쉘에 의해 확장됩니다. pdfnup는 보이지 않지만 *.pdf대신 작업 디렉토리의 모든 파일 목록이 파일 이름으로 끝나는 것을 봅니다 .pdf.
evilsoup

0

하나 folderstructure에서 PDF의 큰 숫자를 가지고, 경우 그리고 당신은 TeX의 설치있어,이 스크립트는 모든 PDF를두고 재귀 하나 개의 큰 파일로 :

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

매우 유용합니다. 독일어 의견을 영어로 번역했습니다.

감사합니다, Alexander



-1
  1. Acrobat Pro와 같은 도구를 사용하여 원하는 페이지를 PDF 문서로 저장하십시오.

  2. 여러 페이지를 사용하여 문서를 페이지 기능으로 인쇄하고 pdf 문서로 다시 인쇄하십시오.

단일 페이지에 여러 페이지. :-)


귀하의 답변이 의견없이 하향 투표 된 것으로 보입니다. 멋지지는 않지만 답을 향상시킬 수있는 방법이 있습니다. 문법을 개선하고, 왜 이런 일을하는지에 대한 설명을 추가하십시오.

이 답변을 찬성했습니다-댓글이없는 다운 보트는 멋진 IMO가 아니기 때문에!
Jeremy Davis

1
피험자가 "pdftk로"라고 말했기 때문에 공감. 귀하의 답변은 주제가 아닌 것이지만 질문자가 찾고있는 것이 아닐 수도 있습니다.
Nik
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.