linux - unir - Mesclar/converter vários arquivos PDF em um PDF
recortar pdf linux (12)
Apache PDFBox http://pdfbox.apache.org/
PDFMerger Esta aplicação terá uma lista de documentos pdf e mesclá-los, salvando o resultado em um novo documento.
uso: java -jar pdfbox-app-xyzjar PDFMerger "Arquivos PDF de origem (2 ..n)" "Arquivo PDF de destino"
Como eu poderia mesclar / converter vários arquivos PDF em um grande arquivo PDF?
Eu 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. Melhor seria se eu pudesse canalizar a saída da mesclagem / converter diretamente para pdf2ps
(como originalmente tentado na minha pergunta anteriormente feita aqui: Linux piping (convert -> pdf2ps -> lp) ).
Aqui está um método que uso e que é fácil de implementar. Isso exigirá as bibliotecas fpdf e fpdi que podem ser baixadas aqui:
require('fpdf.php');
require('fpdi.php');
$files = ['doc1.pdf', 'doc2.pdf', 'doc3.pdf'];
$pdf = new FPDI();
foreach ($files as $file) {
$pdf->setSourceFile($file);
$tpl = $pdf->importPage(1, '/MediaBox');
$pdf->addPage();
$pdf->useTemplate($tpl);
}
$pdf->Output('F','merged.pdf');
Considerando que o pdfunite
faz parte do poppler, tem uma chance maior de ser instalado, o uso também é mais simples que o pdftk
:
pdfunite in-1.pdf in-2.pdf in-n.pdf out.pdf
Depois de pesquisar muitas das bibliotecas de PDF disponíveis, a única coisa que funcionou perfeitamente para mim é
https://libraries.io/npm/easy-pdf-merge
Requer que o Java 6 ou superior seja instalado, mas funciona perfeitamente. O Pdftk está cheio de erros.
var merge = require('easy-pdf-merge');
merge(source_files,dest_file_path,function(err){
if(err)
return console.log(err);
console.log('Success');
});
Nota : Isso não é cmd, mas você pode executá-lo com comandos como aceitar nomes de arquivos como argumentos de linha de comando.
Essa é 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
Eu gosto da idéia do Chasmo, mas prefiro usar as vantagens de coisas como
convert $(ls *.pdf) ../merged.pdf
Dando vários arquivos de origem para convert
leads para mesclá-los em um pdf comum. Esse comando mescla todos os arquivos com extensão .pdf
no diretório real em merged.pdf
no diretório pai.
Eu sou tendencioso sendo um dos desenvolvedores do PyMuPDF (uma ligação Python do MuPDF).
Você pode facilmente fazer o que quiser com ele (e muito mais). O código esqueleto funciona assim:
#-------------------------------------------------
import fitz # the binding PyMuPDF
fout = fitz.open() # new PDF for joined output
flist = ["1.pdf", "2.pdf", ...] # list of filenames to be joined
for f in flist:
fin = fitz.open(f) # open an input file
fout.insertPDF(fin) # append f
fin.close()
fout.save("joined.pdf")
#-------------------------------------------------
É sobre isso. Várias opções estão disponíveis para selecionar apenas intervalos de páginas, mantendo um índice conjunto, invertendo a sequência de páginas ou alterando a rotação da página, etc., etc.
Estamos no PyPi.
Experimente o bom ghostscript:
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=merged.pdf mine1.pdf mine2.pdf
ou mesmo assim, para uma versão melhorada para PDFs de baixa resolução (graças a Adriano por apontar isto):
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -sOutputFile=merged.pdf mine1.pdf mine2.pdf
Em ambos os casos, a resolução de saída é muito maior e melhor do que usando o convert:
convert -density 300x300 -quality 100 mine1.pdf mine2.pdf merged.pdf
Desta forma, você não precisaria instalar mais nada, apenas trabalhe com o que você já instalou em seu sistema (pelo menos ambos vêm por padrão no meu rhel).
Espero que isto ajude,
ATUALIZAÇÃO: em primeiro lugar obrigado por todos os seus comentários agradáveis !! apenas uma dica que pode funcionar para vocês, depois de googlar, achei um truque super legal para encolher o tamanho dos PDFs, reduzi com isso um PDF de 300 MB para apenas 15 MB com resolução aceitável! e tudo isso com o bom ghostscript, aqui está:
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/default -dNOPAUSE -dQUIET -dBATCH -dDetectDuplicateImages -dCompressFonts=true -r150 -sOutputFile=output.pdf input.pdf
Felicidades!!
Também pdfjoin a.pdf b.pdf
criará um novo b-joined.pdf
com o conteúdo de a.pdf e b.pdf
Use as ferramentas de PDF em python https://pypi.python.org/pypi/pdftools/1.0.6
Faça o download do arquivo tar.gz e descompacte-o e execute o comando abaixo
python pdftools-1.1.0/pdfmerge.py -o output.pdf -d file1.pdf file2.pdf file3
Você deve instalar pyhton3 antes de executar o comando acima
Estas ferramentas suportam o abaixo
- adicionar
- inserir
- Remover
- Girar
- Dividido
- Mesclar
- Fecho eclair
Você pode encontrar mais detalhes no link abaixo e é open source
Você pode usar o comando convert diretamente
por exemplo
convert sub1.pdf sub2.pdf sub3.pdf merged.pdf
pdfunite
é bom para mesclar PDFs inteiros. Se você quiser, por exemplo, as páginas 2-7 de arquivo1.pdf e páginas 1,3,4 de arquivo2.pdf, você tem que usar pdfseparate
para dividir os arquivos em PDFs separados para cada página para dar a pdfunite
.
Nesse ponto, você provavelmente quer 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 PDF possuem dependências Mono ou Python. Eu encontrei qpdf
produziu um arquivo de saída muito menor do que usando pdfseparate
e pdfunite
para montar páginas em um PDF de saída de 30 páginas, 970kB contra 1,6450 kB. Como oferece muito mais opções, a linha de comando do qpdf
não é tão simples; a solicitação original para mesclar file1 e file2 pode ser executada com
qpdf --empty --pages file1.pdf file2.pdf -- merged.pdf