Como mesclar vários arquivos PDF em uma página com o pdftk?

32

Eu tenho um intervalo de arquivos PDF 1.pdf , 2.pdf , etc. que gostaria de mesclar em um arquivo, com todos os PDFs em uma única página.

Atualmente, testei pdftk para mesclar esses arquivos, mas eles são colocados em páginas separadas:

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

Existe uma maneira de, em vez disso, associar os arquivos PDF individuais a uma página mestra em merged.pdf ?

    
por Alex Reynolds 10.12.2011 / 00:01

8 respostas

26

Eu testei isso hoje:

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

Ele coloca 2 páginas em uma página.

    
por 06.05.2014 / 12:57
6

O pdfLaTeX baseado pdfnup pode funcionar para voce. Se você tiver muitos arquivos pdf, pode ser necessário fazer um longo canal de pdfjam ou executá-lo várias vezes.

Há também pdfnup em python .

    
por 10.12.2011 / 01:30
3

Não tem certeza do que você quer dizer com tiled on one page . Eu estava procurando uma maneira de mesclar vários PDFs em uma página - em cima de outro. Isso pode ser feito com pdftk assim:

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

    
por 27.08.2013 / 17:07
3

Este script irá colocar as páginas em PDF para você. Altere a fatia para o que você precisa por página.

#!/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
    
por 08.04.2014 / 04:39
2

você pode usar montagem em ImageMagick

$ montage *.pdf merged.pdf

veja também link

    
por 21.12.2011 / 00:25
0

Se nomes de arquivos estiverem na ordem "específica do sistema", pdftk *.pdf cat output merged.pdf deve funcionar bem.

Aqui está o que quero dizer com ordem "específica do sistema".

Exemplo:
Eu tenho 3 arquivos no meu Ubuntu 11.04: 1.pdf, 2.pdf, 10.pdf
Os arquivos são mesclados em ordem: 10.pdf 1.pdf 2.pdf ( ls -l retornou o mesmo pedido que no arquivo mesclado)

Convenção de nomenclatura mais segura: 0001.pdf, 0002.pdf, etc.

    
por 11.12.2011 / 09:20
0

Se você tem um grande número de PDFs em uma estrutura de pastas, e você tem um TeX-Installation, este script coloca todos os PDFs recursivamente em um arquivo grande:

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

Eu não escrevi esse código, eu tenho isso de uma discussão aqui: link

É muito útil. Traduzi alguns comentários em alemão para o inglês.

Atenciosamente, Alexandre

    
por 31.01.2012 / 10:59
0
  1. Salve as páginas desejadas em um documento em pdf com algo como o Acrobat Pro.

  2. Imprima documentos usando as várias páginas para um recurso de página, de volta para um documento em PDF.

Várias páginas para uma única página. : -)

    
por 13.02.2017 / 05:42

Tags