Skip to content

PyPDF2: A Biblioteca Definitiva do Python para Manipulação de PDF

Updated on

PyPDF2 é uma biblioteca poderosa, gratuita e de código aberto projetada para manipulação de PDFs em Python. É uma ferramenta versátil que permite dividir, juntar, recortar, transformar, criptografar e descriptografar arquivos PDF com facilidade. O PyPDF2 suporta as versões 1.4 a 1.7 dos arquivos PDF e não requer dependências externas além da biblioteca padrão do Python, tornando-a uma escolha acessível e conveniente para desenvolvedores Python que trabalham com PDFs.

Esta biblioteca não apenas é robusta como também é segura, oferecendo uma variedade de recursos que garantem a integridade e confidencialidade de seus arquivos PDF. Desde adicionar senhas a PDFs até recuperar texto e metadados deles, o PyPDF2 oferece uma suíte abrangente de ferramentas para manipulação de PDFs. Neste artigo, vamos explorar as capacidades do PyPDF2, fornecendo explicações detalhadas, definições e exemplos para ajudá-lo a aproveitar ao máximo esta biblioteca.

Deseja criar rapidamente visualização de dados em um Dataframe do Python Pandas sem código?

PyGWalker é uma biblioteca Python para Análise Exploratória de Dados com Visualização. PyGWalker (opens in a new tab) pode simplificar seu fluxo de trabalho de análise de dados e visualização de dados no Jupyter Notebook, transformando seu dataframe pandas (e dataframe polars) em uma interface de usuário semelhante ao Tableau para exploração visual.

PyGWalker para visualização de dados (opens in a new tab)

O que é o PyPDF2?

PyPDF2 é uma biblioteca pura em Python com capacidade de dividir, juntar, recortar e transformar páginas de arquivos PDF. Também permite adicionar dados personalizados, opções de visualização e senhas a arquivos PDF. O PyPDF2 também é capaz de recuperar texto e metadados de PDFs, tornando-se uma ferramenta abrangente para manipulação de PDFs.

A biblioteca é de código aberto, o que significa que está disponível gratuitamente para qualquer pessoa usar, modificar e distribuir. Isso a torna uma escolha popular entre os desenvolvedores que precisam trabalhar com PDFs em Python. O PyPDF2 também é independente de plataforma, o que significa que você pode usá-lo independentemente de estar trabalhando em um computador com Windows, Mac ou Linux.

Instalação e Uso do PyPDF2

A instalação do PyPDF2 é simples e pode ser feita usando o pip, o instalador de pacotes do Python. O PyPDF2 requer o Python 3.6 ou superior para funcionar. Veja como você pode instalar o PyPDF2 usando o pip:

pip install PyPDF2

Você também pode instalar o PyPDF2 usando o Anaconda, uma distribuição popular do Python para ciência de dados e aprendizado de máquina. Veja como:

pip install git+https://github.com/py-pdf/PyPDF2.git

Após a instalação, você pode importar a biblioteca PyPDF2 em seu script Python da seguinte maneira:

import PyPDF2

Para verificar a versão do PyPDF2 que você está usando, você pode usar o atributo __version__:

PyPDF2.__version__

Trabalhando com PDFs usando o PyPDF2

Depois de ter instalado o PyPDF2, você pode começar a trabalhar com PDFs. Vamos passar por algumas operações comuns que você pode precisar realizar.

Lendo um PDF

Para ler um PDF, você primeiro precisa abrir o arquivo no modo leitura binária ('rb'), em seguida, criar um objeto PdfFileReader:

arquivoInput = "caminho_para_seu_arquivo_pdf.pdf"
pdf = open(arquivoInput, "rb")
pdf_reader = PyPDF2.PdfFileReader(pdf)

Você pode verificar o número de páginas no PDF usando o atributo numPages:

totalPaginas = pdf_reader.numPages
print(totalPaginas)

Extrair texto de um PDF

Para extrair texto de um PDF, você pode usar o método extractText() da classe PageObject. Primeiro, você precisa obter um objeto PageObject representando uma página específica no PDF:

pagina = pdf_reader.getPage(0)  ## Obter a primeira página

Em seguida, você pode extrair o texto dessa página:

print(pagina.extractText())

Isso imprimirá o conteúdo de texto da primeira página do PDF no console. Observe que o extractText() nem sempre funcionará perfeitamente, dependendo da complexidade do PDF e da codificação de seu texto.

Dividindo páginas de PDF

Uma das funcionalidades poderosas do PyPDF2 é a capacidade de dividir páginas de PDF. Isso pode ser feito usando o método getPage() do objeto PdfFileReader, que recupera uma página pelo seu número. Veja um exemplo de como dividir a primeira página de um PDF:

## Abrir o PDF
with open('caminho_para_seu_arquivo_pdf.pdf', 'rb') as arquivo:
    leitor = PyPDF2.PdfFileReader(arquivo)
    escritor = PyPDF2.PdfFileWriter()
 
    ## Obter a primeira página
    primeira_pagina = leitor.getPage(0)
 
    ## Adicionar a página ao objeto PdfFileWriter
    escritor.addPage(primeira_pagina)
 
    ## Escrever a página em um novo arquivo
    with open('saida.pdf', 'wb') as pdf_saida:
        escritor.write(pdf_saida)

Neste exemplo, saida.pdf será um novo arquivo PDF contendo apenas a primeira página do PDF original.

Combinando PDFs

O PyPDF2 também permite combinar vários PDFs em um só. Isso pode ser feito usando a classe PdfFileMerger. Veja um exemplo:

juntador = PyPDF2.PdfFileMerger()
 
## Lista de PDFs para juntar
pdfs = ['arquivo1.pdf', 'arquivo2.pdf', 'arquivo3.pdf']
 
for pdf in pdfs:
    juntador.append(pdf)
 
juntador.write("juntado.pdf")
juntador.close()

Neste exemplo, juntado.pdf será um novo arquivo PDF que contém todas as páginas de arquivo1.pdf, arquivo2.pdf e arquivo3.pdf, nessa ordem.

Adicionando Senhas a PDFs

O PyPDF2 fornece uma maneira simples de adicionar senhas aos seus arquivos PDF para segurança adicional. Isso pode ser feito usando o método encrypt() do objeto PdfFileWriter. Veja um exemplo:

## Abrir o PDF
Com este exemplo, `encrypted.pdf` será um novo arquivo PDF que é uma cópia do PDF original, mas criptografado com a senha 'your_password'.
 
## Conversão de PDFs para Imagens
 
Embora o PyPDF2 não suporte diretamente a conversão de PDFs para imagens, ele pode ser usado em combinação com outras bibliotecas, como o PDF2Image, para alcançar isso. Aqui está um exemplo:
 
```python
from pdf2image import convert_from_path
 
## Converta o PDF para uma lista de imagens
images = convert_from_path('path_to_your_pdf_file.pdf')
 
## Salve as imagens em arquivos
for i, image in enumerate(images):
    image.save(f'output{i}.png', 'PNG')

Neste exemplo, cada página do PDF é convertida em uma imagem PNG e salva em um arquivo separado.

Perguntas Frequentes

Quais versões de PDF o PyPDF2 suporta?

O PyPDF2 suporta as versões de PDF 1.4 a 1.7. Isso abrange uma ampla variedade de arquivos PDF, tornando o PyPDF2 uma escolha versátil para manipulação de PDFs em Python.

O PyPDF2 possui dependências?

Não, o PyPDF2 não possui dependências além da biblioteca padrão do Python. Isso facilita a instalação e o uso em qualquer sistema que tenha o Python instalado.

Qual versão do Python é necessária para executar o PyPDF2?

O PyPDF2 requer o Python 3.6 ou superior para ser executado. Isso garante compatibilidade com recursos modernos do Python e melhora o desempenho geral e a segurança da biblioteca.