Pdftk के साथ एक पेज पर कई पीडीएफ फाइलों को कैसे मर्ज किया जाए?


35

मैं पीडीएफ फाइलों की एक श्रृंखला है 1.pdf, 2.pdfआदि कि मैं सभी पीडीएफ़ एक पृष्ठ पर टाइलों के साथ एक फ़ाइल में मर्ज करने के लिए, चाहते हैं।

वर्तमान में, मैंने pdftkइन फ़ाइलों को मर्ज करने का प्रयास किया है, लेकिन उन्हें अलग-अलग पृष्ठों पर रखा गया है:

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

क्या इसके बजाय एक मास्टर पेज पर व्यक्तिगत पीडीएफ फाइलों को टाइल करने का एक तरीका है 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

यह एक पेज पर 2 पेज डालता है।


विंडोज़ के साथ-साथ ( wsl के साथ ) काम करता हैsudo apt-get install pdfjam
-glx

4
यदि आप पृष्ठों को लंबवत रूप से गोंद करना चाहते हैं, तो उपयोग करें--nup 1x2 --no-landscape
Jan-glx

यदि आप पृष्ठों का कोई ऑटो-स्केलिंग नहीं चाहते (मेरा स्ट्रेच आउटपुट डिफॉल्ट रूप से a4 भरने के लिए), उपयोग करें--noautoscale true
जोनाथन वाई।

1
प्रश्न pdftk के बारे में पूछ रहा है, pdfjam पर नहीं। यह प्रश्न का उत्तर नहीं देता है; यह एक विकल्प खोजने का सुझाव है
जोम्बा

6

PDFLaTeX आधारित pdfnup आपके लिए काम कर सकता है। यदि आपके पास बहुत सी पीडीएफ़-फाइलें हैं, तो आपको पीडीएफ़एम की एक लंबी पाइप बनाने या इसे कई बार चलाने की आवश्यकता हो सकती है।

अजगर में भी pdfnup है


4

निश्चित नहीं है कि आपका क्या मतलब है tiled on one page। मैं एक पृष्ठ पर एक से अधिक पीडीएफ को एक दूसरे में विलय करने का एक तरीका ढूंढ रहा था। इसे pdftkइस तरह से किया जा सकता है :

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


3

यह स्क्रिप्ट आपके लिए पीडीएफ़ पेजों को टाइल कर देगी। प्रति पृष्ठ पर आपको जो चाहिए, उसका टुकड़ा बदलें।

#!/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
बेनेडिकट कोप्पेल

1
यह सवाल का जवाब नहीं देता है, जो pdftk के बारे में पूछ रहा है
जोम्बा

0

यदि फ़ाइलनाम "सिस्टम विशिष्ट" क्रम में हैं, तो pdftk *.pdf cat output merged.pdfबस ठीक काम करना चाहिए।

यहाँ "सिस्टम विशिष्ट" क्रम से मेरा तात्पर्य है।

उदाहरण:
मैं पर 3 फ़ाइलें मिल गया है मेरी उबंटू 11.04: 1.pdf, 2.pdf, 10.pdf
फ़ाइलें क्रम में विलय कर रहे हैं: 10.pdf 1.pdf 2.pdf ( ls -lविलय फ़ाइल में के रूप में एक ही क्रम लौटे)

सबसे सुरक्षित नामकरण सम्मेलन: 0001.pdf, 0002.pdf, आदि।


1
जैसा कि मैंने कहा, यह कमांड एक मल्टी-पेज पीडीएफ बनाता है। जैसा कि मेरे प्रश्न में कहा गया है, मैं pdftkएक-पृष्ठ पीडीएफ बनाने के लिए उपयोग करने की विधि की तलाश कर रहा हूं जिसमें टाइल के रूप में इनपुट पीडीएफ शामिल हैं।
एलेक्स रेनॉल्ड्स

मेरे उत्तर को @ micke के साथ मिलाएं। मैंने जाँच नहीं की है कि क्या pdfnup वाइल्डकार्ड (* .pdf) के साथ तर्क के रूप में नाम ले सकता है, लेकिन आप pftftk द्वारा उत्पन्न pdf का उपयोग कर सकते हैं। चेक pdfnupया विकल्प के pdfjamसाथ --nup
szemek

जब तक आप उन्हें उद्धृत नहीं करते, वाइल्डकार्ड जैसे *आपके द्वारा उपयोग किए जा रहे शेल द्वारा विस्तारित होते हैं। pdfnupकभी नहीं *.pdfदेखता है, इसके बजाय यह फाइल में काम कर रहे डायरेक्टरी में हर फाइल की एक सूची देखता है .pdf
evilsoup

0

यदि आपको एक फ़ोल्डरस्ट्रक्चर में बड़ी संख्या में पीडीएफ मिले हैं, और आपको एक टीएक्स-इंस्टॉलेशन मिला है, तो यह स्क्रिप्ट सभी पीडीएफ को पुन : एक बड़ी फ़ाइल में डाल देती है :

    #!/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 जैसी कुछ चीज़ों के साथ पीडीएफ़ डॉक्यूमेंट में सेव पेज सुरक्षित थे।

  2. एक पृष्ठ सुविधा के लिए कई पृष्ठों का उपयोग करके दस्तावेज़ प्रिंट करें, एक पीडीएफ दस्तावेज़ पर वापस।

एक पेज के लिए कई पेज। :-)


मैं देख रहा हूं कि आपका उत्तर बिना टिप्पणी के अस्वीकृत है। यह अच्छा नहीं है, लेकिन निश्चित रूप से आपके उत्तर को बेहतर बनाने के तरीके हैं। इसके व्याकरण में सुधार करें, शीर्ष पर एक विवरण जोड़ें कि आप ऐसा क्यों कर रहे हैं, आदि

इस उत्तर को उत्कीर्ण किया - केवल इसलिए कि बिना टिप्पणी के डाउनवोट कूल IMO नहीं हैं!
जेरेमी डेविस

1
पदावनत क्योंकि विषय "pdftk के साथ" कहता है। आपका उत्तर शायद विषय से हटकर नहीं है, लेकिन स्पष्ट रूप से वह नहीं है जो प्रश्नकर्ता ढूंढ रहा है।
निक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.