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

https://github.com/MrLeeh/pdftools


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




command-line-interface