Como mesclar vários arquivos PDF?


Respostas:


209

PDF-Shuffler Instalar o PDF-Shuffler

Se você deseja uma ferramenta com uma GUI simples, tente o pdfshuffler . Permite mesclar PDFs, bem como reorganizar e excluir páginas. Para processamento em lote e / ou tarefas mais complicadas, o pdftk é obviamente mais poderoso.

Captura de tela do PDF-Shuffler


Eu tentei isso - não funcionou em 10.04
David Oneill

Na versão 12.04, o pdfshuffler sempre reclama que há "muitos valores para descompactar", tornando-o inutilizável.
despens

8
Instala e funciona como um encanto em 14.04. Muito obrigado!!
Zlatty

1
Também posso confirmar que pdfshufflerfunciona bem em 14.04 amd64.
conualfy

2
Também funciona muito bem em 16.04.1
Sanjay Manohar

334

pdftkInstale o pdftk

Para mesclar dois arquivos pdf file1.pdfe file2.pdf:

pdftk file1.pdf file2.pdf cat output mergedfile.pdf

Mais informações disponíveis aqui Máquina Way Back .


5
O pdftk é um bug - bugs.launchpad.net/ubuntu/+source/pdftk/+bug/779908 . gs pode ser lento, mas faz o trabalho perfeitamente [resposta do Ignite]
Pushpak Dagade

O @PushpakDagade ghostscript mexe com anotações, principalmente comentários que foram marcados (caixa de seleção marcada com uma marca de seleção), não terá mais essa marca de seleção. Eu não estou ciente de uma maneira de contornar isso. Além disso, se você mesclar o PDF v1.5 + 1.6, a saída será 1.4 por padrão. Esse é um comportamento estranho.
Jonathan Komar

2
O pdftk tem um uso incomum em que comandos cate outputseguem argumentos de entrada variados e seguidos novamente por um argumento de saída.
perfil completo de Jeff Puckett

3
O pacote parece ter sido removido em 2018.04.
Nicolas Raoul

1
@NicolasRaoul Acabei de baixá-lo como uma instalação rápida.
Max

161

Ghostscript é um pacote (disponível por padrão no Ubuntu) que permite exibir ou imprimir arquivos PostScript e PDF em outros formatos ou converter esses arquivos em outros formatos.
Para usar o Ghostscript para combinar arquivos PDF, digite algo como o seguinte:

gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dAutoRotatePages=/None -sOutputFile=finished.pdf  file1.pdf file2.pdf

Aqui está uma breve explicação do comando:

gs         starts the Ghostscript program.
-dBATCH    once Ghostscript processes the PDF files, it should exit.
           If you don't include this option, Ghostscript will just keep running.
-dNOPAUSE  forces Ghostscript to process each page without pausing for user interaction.
-q         stops Ghostscript from displaying messages while it works
-sDEVICE=pdfwrite 
           tells Ghostscript to use its built-in PDF writer to process the files.
-sOutputFile=finished.pdf
           tells Ghostscript to save the combined PDF file with the specified name.
-dAutoRotatePages=/None
           Acrobat Distiller parameter AutoRotatePages controls the automatic orientation selection algorithm: For instance: -dAutoRotatePages=/None or /All or /PageByPage.

Seus arquivos de entrada nem precisam ser arquivos PDF. Você também pode usar arquivos PostScript ou EPS, ou qualquer mistura dos três.

Há muita coisa que você pode fazer com o Ghostscript. Você pode ler a documentação para obter mais detalhes.

Fonte


2
É verdade, mas é incrivelmente lento. Tentei concatenar PDFs de página única de 45 x 400K. pdftklevou 0m0,484s, gslevou 1m32,898s (que é quase 200x mais lento) O arquivo gsera cerca de 21% menor.
Aidan

2
esse comando também funciona se você usar um curinga para a lista de arquivos a serem combinados. por exemplo, substitua file1.pdf file2.pdfporfile*.pdf
Antonios Hadjigeorgalis 29/05

2
Para mim, gstrabalhei com alguns PDFs "não conformes", onde pdftkseriam executados para sempre.
Ntc2

1
Use a -dPDFSETTINGS=/prepressopção de melhoria da qualidade. Tudo graças devido ao original contribuinte
Mohnish

6
@AntoniosHadjigeorgalis Apenas para referência e bom entendimento: isso não é o comando de suporte curingas, que é realmente a casca substituindo file*.pdfcom file1.pdf file2.pdfantes de passar os argumentos para o comando.
Midgard

82

Você também usa o pdfunite para mesclar documentos em pdf:

pdfunite in-1.pdf in-2.pdf in-n.pdf out.pdf

12
AVISO: Um arquivo existente out.pdfserá substituído sem aviso, portanto pdfunite *.pdfnão funcionará conforme o esperado.
precisa saber é o seguinte

1
@krlmlr Você sempre pode colocar a saída em outro diretório.
BЈовић

Justo, cptambém substitui o último argumento sem aviso. Este é apenas para apressar usuários (como eu) - Eu tive sorte eu tinha um backup do arquivo em questão ...
krlmlr

1
Upvote: Esta é uma ferramenta simples de linha de comando sem uma GUI de clique e baba, como muitas das outras respostas aqui. Ele resume bem as complexidades da solução GhostScript (em grande parte equivalente).
Tripleee

1
Isso também é muito rápido. Faz bem o trabalho. Em um servidor muito lento (aws t1.micro), o gs leva 9 segundos, o pdftk leva 4 segundos e este pdfunite leva 0,9 segundos para mesclar dois arquivos!
rsmoorthy

34

Cadeia de PDF Instalar cadeia PDF

Uma solução muito boa é o PDFChain. É GUI é um frontend do PDFTK onde você pode mesclar, dividir ou até adicionar um pouco de fundo aos seus arquivos PDF.


Esta é a melhor resposta. Funciona perfeitamente, independentemente da versão do Ubuntu.
Paulo Coghi

Trabalhou no Ubuntu 14.04 sem problemas!
minha conta_ram

Funciona muito bem no Ubuntu 18.04!
Orschiro 17/11


@ user2413 é uma loja instantânea, não a única fonte de software no Ubuntu. A tentativa de pesquisar apttambém não deu resultados: /
jena


8

Uma abordagem alternativa é usar o Latex, conforme explicado nesta postagem ( sem acesso root, assumindo que você tenha o pdflatex instalado): https://tex.stackexchange.com/questions/8662/merge-two-pdf-files-output-by- látex

Isso é útil caso você não possua as ferramentas mencionadas nem os privilégios de root, mas o pdflatex.

Copio o código tex abaixo para mesclar file1.pdfe file2.pdf. Crie um arquivo chamado output.texe coloque:

\documentclass{article}
\usepackage{pdfpages}
\begin{document}
\includepdf[pages=-]{file1}
\includepdf[pages=-]{file2}
\end{document}

E para compilar, basta usar: pdflatex output.tex

O arquivo mesclado será nomeado como output.pdf.


6

Eu uso o pdfseparate para extrair páginas específicas de um grande arquivo pdf:

pdfseparate -f  156 -l 157 input.pdf  output_%d.pdf 
pdfseparate -f  1   -l 2   input.pdf  output_%d.pdf 

e depois eu junto todos eles via comando:

pdfunite $(ls -v output_*.pdf | tr '\n' ' ') out$(date  +%Y-%m-%d_%H_%M_%S ).pdf

Isso se junta a:

output_1.pdf output_2.pdf output_156.pdf output_157.pdf  

para dentro:

out2014-12-14_23_25_36.pdf

Pode haver uma maneira mais fácil de como lidar ... :-)


A substituição do processo é supérflua e potencialmente prejudicial . Uma linha de comando correta e muito mais simples é, pdfunite output_*.pdf out$(date +%Y-%m-%d-%H_%M_%S).pdfmas falta a ordem de ls -v. Uma correção óbvia e trivial é nomear seus arquivos para que eles sejam classificados naturalmente na ordem em que você deseja incluí-los. Se você absolutamente quiser ls -v, pode pelo menos perder o cachimbo tr, o que não realiza nada aqui.
Tripleee




1

Aqui está a minha abordagem:

  • Queria que ele fosse facilmente acessível, então criei um atalho com o botão direito do mouse no Nautilus (consulte https://help.ubuntu.com/community/NautilusScriptsHowto )
  • Eu queria que fosse muito rápido, então usei o pdfunite
  • O pdfunite aceita apenas os caminhos de arquivos no meio do comando, então tive que coçar a cabeça para gerenciar os espaços nos caminhos de arquivos. Então, assumi que todos os caminhos de arquivo começarão com "/ home /" e terminarão com ".pdf"

Aqui está o resultado:

#!/bin/sh
CLEANED_FILE_PATHS=$(echo $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS | sed 's,.pdf /home/,.pdf\\n/home/,g')
echo $CLEANED_FILE_PATHS | bash -c 'IFS=$'"'"'\n'"'"' read -d "" -ra x;pdfunite "${x[@]}" merged.pdf'

Juste cole este script em

/home/your_username/.local/share/nautilus/scripts

e chame-o de "merge_pdfs.sh" (por exemplo). Em seguida, torne-o executável (clique com o botão direito do mouse em merge_pdfs.sh -> guia Permissões -> marque "Permitir a execução de arquivo como um programa"

Agora, para mesclar arquivos PDF, basta selecioná-los -> clique com o botão direito -> scripts -> merge_pdfs.sh e ele criará um arquivo "merged.pdf" no mesmo diretório

Espero que ajude!

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.