Você pode usar a classe do PyPdf2PdfMerger
.
Concatenação de arquivo
Você pode simplesmente concatenar arquivos usando o append
método.
from PyPDF2 import PdfFileMerger
pdfs = ['file1.pdf', 'file2.pdf', 'file3.pdf', 'file4.pdf']
merger = PdfFileMerger()
for pdf in pdfs:
merger.append(pdf)
merger.write("result.pdf")
merger.close()
Você pode passar identificadores de arquivo em vez de caminhos de arquivo, se desejar.
Mesclagem de arquivos
Se você quiser um controle mais refinado da mesclagem, existe um merge
método do PdfMerger
, que permite especificar um ponto de inserção no arquivo de saída, o que significa que você pode inserir as páginas em qualquer lugar do arquivo. O append
método pode ser considerado como merge
onde o ponto de inserção é o final do arquivo.
por exemplo
merger.merge(2, pdf)
Aqui, inserimos todo o pdf na saída, mas na página 2.
Intervalos de páginas
Se você deseja controlar quais páginas são anexadas de um arquivo específico, você pode usar o pages
argumento de palavra - chave de append
emerge
, passando uma tupla na forma (start, stop[, step])
(como a range
função regular ).
por exemplo
merger.append(pdf, pages=(0, 3)) # first 3 pages
merger.append(pdf, pages=(0, 6, 2)) # pages 1,3, 5
Se você especificar um intervalo inválido, obterá um IndexError
.
Nota: também para evitar que os arquivos PdfFileMerger
fiquem abertos, o método s close deve ser chamado quando o arquivo mesclado for gravado. Isso garante que todos os arquivos sejam fechados (entrada e saída) em tempo hábil. É uma pena que PdfFileMerger
não seja implementado como um gerenciador de contexto, então podemos usar a with
palavra - chave, evitar a chamada fechada explícita e obter alguma segurança de exceção fácil.
Você também pode querer dar uma olhada no pdfcat
script fornecido como parte do pypdf2. Você pode potencialmente evitar a necessidade de escrever código completamente.
O github PyPdf2 também inclui alguns exemplos de código que demonstram a fusão.