Como eu poderia mesclar / converter vários arquivos PDF em um arquivo PDF grande?
Tentei o seguinte, mas o conteúdo do arquivo de destino não era o esperado:
convert file1.pdf file2.pdf merged.pdf
Eu preciso de uma solução de linha de comando (CLI) muito simples / básica. O melhor seria se eu pudesse canalizar diretamente a saída da mesclagem / conversão pdf2ps
(como originalmente tentado na minha pergunta anterior aqui: Linux piping (convert -> pdf2ps -> lp) ).
linux
pdf
merge
command-line-interface
álcool
fonte
fonte
Respostas:
Considerando que
pdfunite
faz parte do poppler, ele tem uma chance maior de ser instalado, o uso também é mais simples do quepdftk
:fonte
pdfunite *.pdf out.pdf
assumindo que não exista outro pdf nesse diretório e que a ordem deles seja preservada por "*". Se não for preservado, o uso de intervalos: filename_ {0..9} .pdf o resolverá.Experimente o bom ghostscript:
ou mesmo desta maneira para uma versão melhorada para PDFs de baixa resolução (obrigado Adriano por apontar isso):
Em ambos os casos, a resolução da saída é muito maior e melhor que essa usando o convert:
Dessa forma, você não precisaria instalar mais nada, apenas trabalhe com o que você já instalou no seu sistema (pelo menos os dois vêm por padrão no meu rhel).
Espero que isto ajude,
ATUALIZAÇÃO: obrigado por todos os seus comentários legais !! apenas uma dica que pode funcionar para vocês, depois de pesquisar no Google, achei um truque excelente para diminuir o tamanho de PDFs, reduzi um PDF de 300 MB para apenas 15 MB com uma resolução aceitável! e tudo isso com o bom fantasma, aqui está:
Felicidades!!
fonte
gs
roda muito rápido e comprime bastante. No entanto, a qualidade melhorou muito depois que eu usei esse parâmetro:-dPDFSETTINGS=/prepress
-dPDFSETTINGS=/prepress
tem o efeito muito bom de girar páginas muito grandes e forçar barras de rolagem horizontais irritantes..bash_profile
e você terá um bom atalho:pdfmerge() { gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -sOutputFile=$@ ; }
Isso poupa algumas digitações, se você precisar usar muito o comando. O uso fica assim:pdfmerge merged.pdf mine1.pdf mine2.pdf
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -sOutputFile=merged.pdf mine1.pdf mine2.pdf
pode ser reduzido para ogs -q -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -o merged.pdf mine1.pdf mine2.pdf
. Da documentação : "Como uma abreviação conveniente, você pode usar a-o
opção seguida pela especificação do arquivo de saída, conforme discutido acima. A-o
opção também define as opções-dBATCH
e-dNOPAUSE
. Essa é uma maneira rápida de chamarghostscript
para converter um ou mais arquivos de entrada".Sinto muito, eu consegui encontrar a resposta usando o google e um pouco de sorte :)
Para os interessados;
Instalei o pdftk (pdf toolkit) em nosso servidor debian e, usando o seguinte comando, obtive a saída desejada:
OU
Por sua vez, isso pode ser canalizado diretamente para o pdf2ps.
fonte
gs -q -sPAPERSIZE=letter -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=out.pdf in1.pdf in2.pdf in3.pdf ...
pdftk file1.pdf file2.pdf cat output out.pdf
produzirá o arquivo mesclado comoout.pdf
pdftk
não está disponível para sistemas EL7 devido à falta de dependêncialibgcj
.Esta é a solução mais fácil se você tiver vários arquivos e não quiser digitar os nomes um por um:
qpdf --empty --pages *.pdf -- out.pdf
fonte
Também
pdfjoin a.pdf b.pdf
criará um novob-joined.pdf
com o conteúdo de a.pdf e b.pdffonte
Você pode usar o comando convert diretamente,
por exemplo
fonte
convert -compress lossless sub1.pdf sub2.pdf sub3.pdf merged.pdf
, mas o tamanho do arquivo resultante pode ser muito grande. Eu sugiro em seuconvert -compress jpeg -quality 90 sub1.pdf sub2.pdf sub3.pdf merged.pdf
lugar.pdfunite
é bom mesclar PDFs inteiros. Se você quiser, por exemplo, as páginas 2 a 7 do arquivo1.pdf e as páginas 1,3,4 do arquivo2.pdf, será necessáriopdfseparate
dividir os arquivos em PDFs separados para cada página a ser entregue.pdfunite
.Nesse ponto, você provavelmente deseja um programa com mais opções.
qpdf
é o melhor utilitário que encontrei para manipular PDFs.pdftk
é maior e mais lento e o Red Hat / Fedora não o empacota devido à sua dependência do gcj. Outros utilitários de PDF têm dependências Mono ou Python. Descobri queqpdf
produzi um arquivo de saída muito menor do que o usopdfseparate
epdfunite
a montagem de páginas em um PDF de saída de 30 páginas, 970kB vs. 1,6450 kB. Por oferecer muito mais opções,qpdf
a linha de comando não é tão simples; a solicitação original para mesclar arquivo1 e arquivo2 pode ser realizada comfonte
pdftk
mais por causa de sua dependênciagcj
, pela qual o suporte foi descartado, acredito. Apesar de procurar por ferramentas de manipulação de pdf viapacman -Ss pdf
, eu perdi isso. Obrigado por esta resposta! Eu deveria receber muito mais votos, para que apareça ao lado das sugestões parapdfunite
oupdftk
.Apache PDFBox http://pdfbox.apache.org/
PDFMerger Este aplicativo pega uma lista de documentos PDF e os mescla, salvando o resultado em um novo documento.
fonte
Use ferramentas PDF do python https://pypi.python.org/pypi/pdftools/1.0.6
Faça o download do arquivo tar.gz, descompacte-o e execute o comando abaixo
Você deve instalar o pyhton3 antes de executar o comando acima
Essas ferramentas suportam o abaixo
Você pode encontrar mais detalhes no link abaixo e é de código aberto
https://github.com/MrLeeh/pdftools
fonte
gs
(todas as variantes listadas acima), uma mesclagem simples de dois PDFs, 2 MB e 500 KB, estava demorando minutos para ser concluída e resultando em um arquivo de 40 MB!pdftools
termina instantaneamente com tamanho de arquivo idêntico.Você pode usar o sejda-console , de código aberto e gratuito. Descompacte e execute
sejda-console merge -f file1.pdf file2.pdf -o merged.pdf
Ele preserva marcadores, anotações de links, acroformas, etc. Na verdade, ele tem muitas opções com as quais você pode brincar, basta correr
sejda-console merge -h
para ver todas elas.fonte
Se você deseja converter todas as imagens baixadas em um pdf, execute
convert img{0..19}.jpg slides.pdf
fonte
Eu segundo a
pdfunite
recomendação. No entanto, eu estava recebendoArgument list too long
erros, enquanto tentava mesclar arquivos> 2k PDF.Voltei-me para o Python para este e dois pacotes externos: PyPDF2 (para lidar com todas as coisas relacionadas ao PDF) e natsort (para fazer um tipo "natural" dos nomes de arquivo do diretório). Caso isso possa ajudar alguém:
fonte
date +%s
.pdf' && pdfunite output - *. pdf output.pdf (Isso criará lotes de 500 arquivos processados em série, faça com que os arquivos temporários resultantes sejam classificados na ordem correta e produzir um arquivo de saída apropriada, você vai precisar para limpar os arquivos temporários após)Aqui está um método que eu uso, que funciona e é fácil de implementar. Isso vai exigir tanto a fpdf e FPDI bibliotecas que pode ser baixado aqui:
fonte
Sou tendencioso por ser um dos desenvolvedores do PyMuPDF (uma ligação do MuPDF em Python).
Você pode facilmente fazer o que quiser com ele (e muito mais). O código do esqueleto funciona assim:
É sobre isso. Várias opções estão disponíveis para selecionar apenas intervalos de páginas, manter um índice conjunto, reverter a sequência de páginas ou alterar a rotação da página, etc., etc.
Estamos em PyPi.
fonte
Eu gosto da ideia do Chasmo, mas prefiro usar as vantagens de coisas como
Fornecer vários arquivos de origem
convert
leva a mesclá-los em um pdf comum. Este comando mescla todos os arquivos com.pdf
extensão no diretório real no diretóriomerged.pdf
pai.fonte
$(ls *.pdf)
no lugar do curinga simples*.pdf
?ls *.pdf
curinga, você perde o controle sobre a ordem dos arquivos mesclados. Em um exemplo, a seguinte lista: 1.pdf, 2.pdf, 3.pdf, ..., 10.pdf, ..., 100.pdf será realmente mesclada como 1.pdf, 10.pdf, 100. pdf, 2.pdf, 3.pdf (devido à maneira padrão do Linux de solicitar arquivos - aqui você tem mais detalhes sobre esse problema - stackoverflow.com/q/22948042/1977012 ).Embora não seja uma solução de linha de comando, pode ajudar os
macos
usuários:fonte
Você pode ver usar o pdftools gratuito e de código aberto (isenção de responsabilidade: eu sou o autor dele).
É basicamente uma interface Python para o
pdfpages
pacote Latex .Para mesclar arquivos pdf um por um, você pode executar:
Para mesclar todos os arquivos pdf em um diretório, você pode executar:
fonte