As bibliotecas de extensões PDF no Python (ext:pdf) permitem trabalhar com arquivos PDF. Dessa forma, permite não apenas ler e escrever arquivos PDF, mas também manipular seus conteúdos, como adicionar, remover e alterar páginas, campos de formulário e metadados. Além disso, as biblioteca também nos permite converter arquivos PDF em outros formatos, como imagens e textos.
Arquivos PDF são uma das formas de arquivo mais populares para documentos, tanto para uso pessoal quanto profissional. E, como desenvolvedores, é muitas vezes necessário trabalhar com esses arquivos em nossas aplicações. Python, felizmente, conta com algumas bibliotecas poderosas e fácil de usar para lidar com arquivos no formato PDF.
Neste artigo, vamos explorar como usar as biblioteca para trabalhar com arquivos PDF em Python. Vamos ver como instalar e importar a biblioteca, como criar e manipular arquivos PDF, e como utilizar algumas das funcionalidades mais avançadas da biblioteca.
Conteúdo
Bibliotecas de extensões PDF populares no python
Existem várias bibliotecas populares de extensões PDF para Python, cada uma com suas próprias funcionalidades e aplicação em diferentes contextos. Aqui estão algumas das bibliotecas mais populares, lembrando que podemos está utilizando outras bibliotecas como veremos mais na frente:
- PyPDF2: É uma biblioteca leve e fácil de usar para manipular PDFs em Python. Dessa forma, proporciona funções para ler e escrever PDFs, bem como para adicionar, remover e manipular páginas.
- pdfminer: É uma biblioteca de processamento de PDFs que permite extrair informações de PDFs, como texto, layout, imagens e anotações. Também usada para identificar e separar diferentes partes de um PDF, como capas, páginas e anexos.
- pdfquery: É uma biblioteca de consulta de PDFs que permite fazer consultas SQL em PDFs. Assim, convertemos PDFs em uma forma
tabular
para que consultas sejam realizadas em cima deles. - pdfkit: Essa é uma biblioteca de gerenciamento de PDFs que permite criar, ler, manipular e escrever PDFs em Python. Nesse sentido, incluindo funções para adicionar, remover, conversão de PDFs em outros formatos, como Imagens e manipular páginas, assim como para assinar e proteger PDFs.
- reportlab: É uma biblioteca de geração de relatórios que permite criar PDFs complexos a partir de dados dinâmicos. Portanto, inclui funções para criar tabelas, gráficos, imagens e texto, além de suportar a personalização de layout e estilo.
- pstoedit: É uma biblioteca de edição de PDFs, incluindo funções para adicionar, remover e manipular páginas, assim como para alterar o texto e as imagens dos PDFs.
- pdf-reactor: É uma biblioteca de processamento de PDFs que permite manipular PDFs em Python. Assim, incluindo funções para adicionar, remover e manipular páginas, assim como para extrair informações de PDFs, como texto e anotações.
Características e benefícios das extensões PDF no Python
As extensões PDF são uma das características mais populares do Python, uma linguagem de programação de alto nível e interpretada. Dessa forma, essas extensões de pdf no python permitem que os desenvolvedores criem, enxuguem e editem arquivos PDF com facilidade, além de converter arquivos PDF em outros formatos de arquivo.
Aqui estão algumas das principais características e benefícios das extensões PDF no Python:
1. Criar arquivos PDF
As extensões PDF no python permitem que os desenvolvedores criem arquivos PDF a partir do zero. Nesse sentido, usamos uma biblioteca reportlab
, que é uma das principais bibliotecas de geração de PDF do Python. Com essa biblioteca, os desenvolvedores podem criar páginas, adicionar texto e imagens, definir layouts e estilos, entre outras funcionalidades.
Exemplo de como criar um arquivo PDF usando uma biblioteca reportlab
no Python:
import reportlab.lib.pagesizes as pagesizes
from reportlab.pdfgen import canvas
# Criar um objeto PageSize
page_size = pagesizes.letter()
# Criar um objeto Canvas
canvas = canvas.Canvas('example.pdf')
# definir o tamanho da página
canvas.setPageSize(page_size)
# adicionar texto à página
text = 'Hello, world!'
canvas.drawString(100, 750, text)
# adicionar uma imagem à página
image = 'example.jpg'
canvas.drawImage(image, (100, 500))
# adicionar uma linha à página
canvas.drawLine(100, 250, 300, 250)
# adicionar um rectangle à página
canvas.drawRect(100, 150, 300, 50)
# fechar o arquivo PDF
canvas.showPage()
canvas.save()
Este exemplo cria um arquivo PDF chamado “example.pdf” com uma página de tamanho carta (21,59 cm x 27,94 cm), com um texto, uma imagem e um retângulo desenhado na página.
Portanto, usamos o objeto PageSize
para definir o tamanho da página, e usamos o objeto Canvas
para criar a página e adicionar elementos a ela, e usamos o método save
para salvar o arquivo PDF.
2. Leitura de arquivos PDF
As extensões PDF também permitem que os desenvolvedores leiam e analisem arquivos PDF existentes. Nesse sentido, podemos está usando uma biblioteca pyPDF2
, que é uma das principais bibliotecas de leitura de PDF do Python. Com essa biblioteca, os desenvolvedores podem acessar e manipular o conteúdo de um arquivo PDF, como texto, imagens e metadados.
Agora vamos ver um exemplo de como ler um arquivo PDF usando uma biblioteca pyPDF2
no Python, abrindo um arquivo PDF chamado “example.pdf” e depois ler o número de páginas que ele possui. Em seguida, ele lê o conteúdo da primeira página do arquivo PDF e o imprime na saída padrão. Veja a baixo:
import pyPDF2
# Abrir um arquivo PDF
with open('example.pdf', 'rb') as f:
# Criar um objeto PDFFile
pdf_file = pyPDF2.PDFFile(f)
# Ler o número de páginas do arquivo PDF
page_count = pdf_file.getNumPages()
print(f'Number of pages: {page_count}')
# Ler o conteúdo da primeira página
page_content = pdf_file.getPage(0).extractText()
print(page_content)
O objeto PDFFile
é usado para abrir o arquivo PDF e acessar suas páginas e conteúdo. O método getNumPages
é usado para ler o número de páginas do arquivo PDF, e o método getPage
é usado para ler o conteúdo da primeira página. O método extractText
é usado para extrair o texto da página.
3. Edição de arquivos PDF
Além de criar e ler arquivos PDF, as extensões PDF também permitem que os desenvolvedores editem os arquivos PDF existentes. Portanto, usamos uma biblioteca pdftotext
, que permite que os desenvolvedores extraiam textos de arquivos PDF e os convertam em formatos de texto simples, como o formato de texto simples.
No exemplo abaixo, veremos como editar um arquivo PDF usando uma biblioteca pyPDF2
no Python. Primeiro, abre um arquivo PDF chamado “example.pdf”, adiciona uma nova página ao final do arquivo e adiciona texto e uma imagem à nova página. Em seguida, ele salvou o arquivo PDF editado como “edited_example.pdf”.
import pyPDF2
# Abrir um arquivo PDF
with open('example.pdf', 'rb') as f:
# Criar um objeto PDFFile
pdf_file = pyPDF2.PDFFile(f)
# Adicionar uma nova página ao arquivo PDF
pdf_file.addPage(pyPDF2.Page(100, 100))
# Adicionar texto à nova página
text = 'This is a new page!'
pdf_file.getPage(1).drawString(50, 50, text)
# Adicionar uma imagem à nova página
image = 'example.jpg'
pdf_file.getPage(1).drawImage(image, (100, 100))
# Salvar o arquivo PDF editado
pdf_file.save('edited_example.pdf')
O objeto PDFFile
é usado para abrir o arquivo PDF e adicionar uma nova página ao final do arquivo. O método addPage
é usado para adicionar uma nova página, e o método drawString
é usado para adicionar texto à página. O método drawImage
é usado para adicionar uma imagem à página. Por fim, o método save
é usado para salvar o arquivo PDF editado.
4. Conversão de arquivos PDF
As extensões PDF também permitem que os desenvolvedores convertam arquivos PDF em outros formatos de arquivo. Assim, podemos está usando uma biblioteca pdf2image
, que permite que os desenvolvedores convertam páginas de um arquivo PDF em imagens raster, como JPEG ou PNG.
Neste exemplo de como converter um arquivo PDF para um arquivo de texto usando uma biblioteca pyPDF2
no Python, abrimos um arquivo PDF chamado “example.pdf” e extrai o texto de todas as páginas do arquivo PDF. Em seguida, ele salva o texto em um arquivo de texto chamado “example.txt”. Veja:
import pyPDF2
# Abrir um arquivo PDF
with open('example.pdf', 'rb') as f:
# Criar um objeto PDFFile
pdf_file = pyPDF2.PDFFile(f)
# Extrair o texto do arquivo PDF
text = ''
for page in pdf_file.pages:
text += page.extractText()
# Salvar o texto em um arquivo de texto
with open('example.txt', 'w') as f:
f.write(text)
O objeto PDFFile
é usado para abrir o arquivo PDF e acessar suas páginas. O método extractText
é usado para extrair o texto de cada página do arquivo PDF. O texto é salvo em uma variável e, em seguida, salvo em um arquivo de texto usando o método write
do objeto open
.
5. Integração com outras tecnologias
Também utilizamos as extensões PDF integradas com outras tecnologias, como por exemplo, com o Django, um framework de desenvolvimento web para Python, ou com o Selenium, uma biblioteca de automação de testes para Python. Dessa forma, essa integração permite que os desenvolvedores criem soluções personalizadas para suas necessidades específicas.
Suponha que queremos criar um sistema de gerenciamento de documentos que permita aos usuários fazer upload de arquivos PDF, extrair informações deles e armazená-los em um banco de dados. Para fazer isso, podemos utilizar uma biblioteca pyPDF2
para lidar com os arquivos PDF e uma base de dados, como MySQL ou MongoDB, para armazenar as informações extraídas.
Aqui está um exemplo :
import pyPDF2
import mysql.connector
# Criar uma connexão com o banco de dados
cnx = mysql.connector.connect(
user='usuario',
password='senha',
host='localhost',
database='banco_de_dados'
)
# Criar uma tabela no banco de dados para armazenar as informações extraídas
cursor = cnx.cursor()
cursor.execute('CREATE TABLE IF NOT EXISTS pdf_info (id INT PRIMARY KEY, name VARCHAR(255), data TEXT)')
# Abrir um arquivo PDF e extrair informações delicadas
with open('example.pdf', 'rb') as f:
pdf_file = pyPDF2.PDFFile(f)
name = pdf_file.getTitle()
data = pdf_file.getPage(0).extractText()
# Salvar as informações extraídas no banco de dados
cursor.execute('INSERT INTO pdf_info (name, data) VALUES (%s, %s)', (name, data))
cnx.commit()
# Fechar a connexão com o banco de dados
cnx.close()
Este exemplo aplica-se uma biblioteca mysql.connector
para conectar a um banco de dados MySQL e criar uma tabela para armazenar as informações extraídas dos arquivos PDF.
Como criar um arquivo PDF a partir de um modelo de dados usando bibliotecas de extensões PDF no python
Para criar um arquivo PDF a partir de um modelo de dados em Python, usamos a biblioteca Python PDFkit.
PDFkit é uma biblioteca Python que permite criar PDFs a partir de dados HTML, texto, imagens e outros formatos de arquivo. Dessa forma, fornecendo uma ampla variedade de recursos para personalizar o conteúdo e a aparência do PDF, incluindo suporte a tabelas, imagens, linhas, formulários, anotações e muito mais.
Aqui está um exemplo de como criar um arquivo PDF a partir de um modelo de dados em Python usando PDFkit:
- Primeiro, instalamos uma biblioteca PDFkit. Dessa forma, fazemos isso da seguinte forma com o comando pip:
pip install pdfkit
- Em seguida, precisamos importar a biblioteca PDFkit no código Python:
from pdfkit import PDFKit
- Agora, criamos um objeto PDFKit e fornecer os dados que desejamos incluir no PDF. Por exemplo, quando temos um dicionário de dados com informações sobre um conjunto de produtos, podemos criar um PDFKit e adicionar esses dados ao PDF:
import pdfkit
# Criar um dicionário com informações sobre os produtos
products = {
"Produto 1": {
"Nome": "Produto 1",
"Preço": 19.99,
"Descrição": "Este é o produto 1"
},
"Produto 2": {
"Nome": "Produto 2",
"Preço": 29.99,
"Descrição": "Este é o produto 2"
},
"Produto 3": {
"Nome": "Produto 3",
"Preço": 39.99,
"Descrição": "Este é o produto 3"
}
}
# Criar um PDFKit
pdf = pdfkit.PDFKit()
# Adicionar uma página ao PDF
pdf.add_page()
# Adicionar uma tabela à página
table = pdf.add_table(10, 10, 100, 100)
# Adicionar as informações dos produtos à tabela
for produto, informações in products.items():
table.add_row()
table.add_cell(produto)
table.add_cell(informações["Nome"])
table.add_cell(informações["Preço"])
table.add_cell(informações["Descrição"])
# Salvar o PDF
pdf.save("produtos.pdf")
Agora, podemos adicionar mais informações ao PDF, como imagens, links, formulários, anotações, etc.
- Adicionando imagens, aplicamos o método
add_image()
do objetoPDFKit
. Por exemplo:
pdf.add_image("path/to/image.jpg")
- Com links, utilizamos o método
add_link()
do objetoPDFKit
. Por exemplo:
pdf.add_link("http://www.example.com", "Link para o site")
- Já para formulários, usamos o método
add_form()
do objetoPDFKit
. Por exemplo:
pdf.add_form(fields=[
{"name": "Nome", "type": "text"},
{"name": "E-mail", "type": "email"},
{"name": "Telão", "type": "number"}
])
- Para adicionar anotações, aplicamos o método
add_annotation()
do objetoPDFKit
. Por exemplo:
pdf.add_annotation(text="Este é um exemplo de anotação")
- Ao final, salvamos o PDF usando o método
save()
do objetoPDFKit
. Por exemplo:
pdf.save("nome_do_arquivo.pdf")
Essa é a forma básica de criar um PDF usando o PDFKit em Python. Nesse sentido, recomendamos consultar a documentação oficial do PDFKit para saber mais sobre as funcionalidades e recursos disponíveis.
Adicionando metadados a um arquivo PDF no Python
Agora vamos aprender a adicionar metadados em arquivos no formatos PDF em python com diferente bibliotecas.
Adicionando metadados a um arquivo PDF em Python
Para adicionar metadados a um arquivo PDF em Python, utilizamos a biblioteca PyPDF2
. Dessa forma, essa biblioteca permite ler e escrever arquivos PDF e também permite adicionar, alterar e remover metadados.
Aqui está um exemplo de como adicionar metadados a um arquivo PDF usando PyPDF2
:
import PyPDF2
# Abrir o arquivo PDF
with open('arquivo.pdf', 'rb') as f:
# Criar um objeto PyPDF2.PdfFileReader para ler o arquivo PDF
pdf_reader = PyPDF2.PdfFileReader(f)
# Adicionar metadados ao arquivo PDF
pdf_reader.addMetadata({
'title': 'Meu arquivo PDF',
'author': 'João da Silva',
'creator': 'Python e PyPDF2',
'producer': 'My PDF Creator'
})
# Salvar o arquivo PDF com os metadados adicionados
with open('arquivo-metadados.pdf', 'wb') as f:
pdf_reader.write(f)
Neste exemplo, estamos usando o método addMetadata
do objeto PdfFileReader
para adicionar quatro metadados ao arquivo PDF: título, autor, criador e produtor. Assim, podemos adicionar mais metadados conforme necessário.
Lendo informações sobre o arquivo PDF no python
Agora vamos aplicar o método get_info
do objeto PDFDocument
para ler informações sobre o arquivo PDF, como o título, autor, criador e produtor:
import pdfminer
# Abrir o arquivo PDF
with open('arquivo.pdf', 'rb') as f:
# Criar um objeto pdfminer.PDFDocument para ler o arquivo PDF
doc = pdfminer.PDFDocument(f)
# Ler as informações do arquivo PDF
info = doc.get_info()
# Imprimir as informações
print(info)
Validando os dados de um PDF no Python
Agora temos outro exemplo de usando a biblioteca pydantic
, criando um modelo de dados e usando o método validate()
para validar os dados de um arquivo PDF:
import pydantic
# Criar um modelo de dados para o arquivo PDF
class PdfFile(pydantic.BaseModel):
title: str
author: str
creator: str
producer: str
# Criar um objeto pydantic.PDFFile para ler o arquivo PDF
with open('arquivo.pdf', 'rb') as f:
pdf_file = PdfFile(f)
# Validar os dados do arquivo PDF
if pdf_file.validate():
print("Os dados do arquivo PDF são válidos.")
else:
print("Os dados do arquivo PDF não são válidos.")
Neste exemplo, estamos criando um modelo de dados PdfFile
com quatro campos: title
, author
, creator
e producer
. Em seguida, estamos criando um objeto PdfFile
a partir do arquivo PDF e usando o método validate()
para validar os dados do arquivo PDF.
Se os dados do arquivo PDF forem válidos, o método validate()
retornará True
e imprimirá a mensagem “Os dados do arquivo PDF são válidos.”. Caso contrário, o método validate()
retornará False
e imprimirá a mensagem “Os dados do arquivo PDF não são válidos.”.
Dessa forma, podemos adaptar esse exemplo para nossos próprios fins, criando um modelo de dados personalizado para o arquivo PDF e usando o método validate()
para validar os dados do arquivo PDF.
Exemplos de como converter arquivos PDF no Python
Para converter arquivos PDF em outros formatos utilizando Python, podemos está utilizando algumas bibliotecas
. Assim, permitindo ler e escrever arquivos PDF e convertê-los em outros formatos, como Image, Texto, HTML, entre outros.
1. Convertendo PDF para imagem
Aqui está um exemplo de como converter um arquivo PDF em um arquivo de imagem PNG utilizando PyPDF2
. Neste exemplo, estamos aberto um arquivo PDF chamado arquivo.pdf
e selecionando a primeira página (page_number = 1
) para ser convertida em uma imagem PNG. Em seguida, estamos usando o método convertToImage()
para criar a imagem e salvando em disco com o nome image.png
. Veja:
import PyPDF2
# Abrir o arquivo PDF
with open('arquivo.pdf', 'rb') as f:
# Criar um objeto PyPDF2.PdfFileReader para o arquivo PDF
pdf = PyPDF2.PdfFileReader(f)
# Informar o número da página que desejamos converter
page_number = 1
# Criar uma imagem PNG a partir da página selecionada
image = pdf.getPage(page_number).convertToImage()
# Salvar a imagem em disco
with open('image.png', 'wb') as f:
f.write(image)
2. Convertendo PDF em HTML
Além disso, convertermos os arquivos PDF em outros formatos, como Texto, HTML, entre outros, utilizando os métodos getPage().getText()
para obter o texto da página e getPage(). convertToHtml()
para obter o código HTML da página, respectivamente.
Para converter em outro formato, é necessário instalar as bibliotecas necessárias, como por exemplo, reportlab
para converter em HTML. Veja:
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas
# Abrir o arquivo PDF
with open('arquivo.pdf', 'rb') as f:
# Criar um objeto PyPDF2.PdfFileReader para o arquivo PDF
pdf = PyPDF2.PdfFileReader(f)
# Informar o número da página que desejamos converter
page_number = 1
# Criar um objeto reportlab.pdfgen.canvas para a página selecionada
canvas = pdf.getPage(page_number).convertToCanvas()
# Definir o tamanho da página
page_size = letter.A4
# Criar um arquivo HTML vazio
html =''
# Adicionar o código HTML da página ao arquivo HTML
html += canvas.get_html(page_size)
# Salvar o arquivo HTML em disco
with open('arquivo.html', 'w') as f:
f.write(html)
Neste exemplo, estamos convertendo a primeira página do arquivo PDF em um arquivo HTML. Em seguida, estamos usando o método convertToCanvas()
para criar um objeto reportlab.pdfgen.canvas
para a página selecionada e o método get_html()
para obter o código HTML da página. Por fim, estamos salvando o arquivo HTML em disco com o nome arquivo.html
.
3. Convertendo PDF me Excel
Para converter um arquivo PDF em um arquivo Excel usando Python, utilizamos a biblioteca pandas
e openpyxl
.
Aqui está um exemplo de como converter um arquivo PDF em um arquivo Excel usando essas bibliotecas:
import pandas as pd
from openpyxl import load_workbook
# Abrir o arquivo PDF
with open('arquivo.pdf', 'rb') as f:
# Criar um objeto pandas.DataFrame a partir do arquivo PDF
df = pd.read_pdf(f)
# Convertar o DataFrame em um arquivo Excel
workbook = load_workbook(filename='arquivo.xlsx')
sheet = workbook.active
# Copiar as células do DataFrame para o arquivo Excel
df.to_excel(sheet, index=False)
# Salvar o arquivo Excel em disco
workbook.save('arquivo.xlsx')
Neste exemplo, estamos abrindo um arquivo PDF chamado arquivo.pdf
e usando o método read_pdf()
da biblioteca pandas
para criar um objeto pandas.DataFrame
a partir do conteúdo do arquivo. Em seguida, estamos convertendo esse DataFrame em um arquivo Excel usando o método to_excel()
da biblioteca openpyxl
. Por fim, estamos salvá-lo em disco com o nome arquivo.xlsx
.
O método read_pdf()
aceita várias opções, como orientação
e skip_rows
, que podem ser usadas para personalizar a leitura do arquivo PDF. Assim, O método to_excel()
aceita várias opções, como sheet_name
e index
, que são usadas para personalizar a escrita do arquivo Excel.
Portanto, é importante lembrar que a qualidade da conversão pode variar dependendo do conteúdo do arquivo PDF e da configuração das opções de leitura e escrita.
Trabalhando com anexos em um arquivo PDF no Python
Para trabalhar com anexos em um arquivo PDF usando Python e adicionar um anexo a um arquivo PDF usando PyPDF2
, vamos seguir os seguintes passos:
- Instale uma biblioteca
PyPDF2
usando o comandopip install PyPDF2
. - Importe uma biblioteca
PyPDF2
no código Python. - Abra o arquivo PDF usando a função
PdfFileReader
da bibliotecaPyPDF2
. - Adicione o anexo usando a função
addAttachment
do objetoPdfFileReader
. - Salve o arquivo PDF atualizado usando a função
write
do objetoPdfFileReader
.
Aqui está um exemplo de código que adiciona um anexo a um arquivo PDF usando PyPDF2
:
import PyPDF2
# Abra o arquivo PDF
with open('document.pdf', 'rb') as f:
pdf = PyPDF2.PdfFileReader(f)
# Adicione o anexo
pdf.addAttachment('path/to/attachment.txt', 'text/plain')
# Salve o arquivo PDF atualizado
with open('document_with_attachment.pdf', 'wb') as f:
pdf.write(f)
Esse código aberto o arquivo PDF document.pdf
, adiciona um anexo chamado attachment.txt
com o tipo de conteúdo text/plain
e salve o arquivo PDF atualizado como document_with_attachment.pdf
.
Nesse sentido, usamos a função addAttachment
para adicionamos anexos em outros formatos, como imagens, áudios e vídeos.
Para ler um anexo de um arquivo PDF usando PyPDF2
, usamos a função getAttachment
do objeto PdfFileReader
. Assim, essa função retorna uma tupla contendo o nome do anexo e o conteúdo do anexo.
Aqui está um exemplo de código que lê um anexo de um arquivo PDF usando PyPDF2
:
import PyPDF2
# Abra o arquivo PDF
with open('document_with_attachment.pdf', 'rb') as f:
pdf = PyPDF2.PdfFileReader(f)
# Ler o anexo
attachment = pdf.getAttachment('attachment.txt')
# Imprimir o conteúdo do anexo
print(attachment[1])
Assim, esse código abri o arquivo PDF document_with_attachment.pdf
, busca o anexo chamado attachment.txt
e imprime o conteúdo do anexo.