Como criar um arquivo PDF em Python
O PDF (Portable Document Format) é o formato de arquivo digital mais popular para envio e recebimento de dados online. Ele é usado principalmente para preservar a formatação dos dados e protegê-los com uma senha criptografada. A extensão .pdf é independente de aplicativos de software, hardware ou sistemas operacionais.
Neste artigo, vamos criar um arquivo PDF na linguagem de programação Python. Existem diversas opções online disponíveis, mas aqui utilizaremos uma biblioteca Python para criar arquivos PDF. A seguir, apresentamos duas bibliotecas famosas para gerar documentos PDF com uma ou várias páginas em Python:
- Reportlab
- PDFKit
Dentre as bibliotecas Python para PDF mencionadas acima, podemos usar qualquer uma para gerar PDFs.
Como criar um arquivo PDF em Python?
Vamos analisar as duas bibliotecas uma por uma.
Criando arquivos PDF usando a biblioteca Reportlab
A biblioteca Reportlab é um conjunto de ferramentas PDF gratuito e de código aberto que pode ser usado para criar arquivos PDF com facilidade. Oferece diversas ferramentas de desenho para adicionar imagens e texto em uma posição específica em várias páginas. Você também pode criar arquivos PDF criptografados usando o método encryptCanvas.
Instalação
Para instalar o Reportlab, é necessário o gerenciador de pacotes pip. Ele baixa e instala automaticamente o pacote solicitado usando o comando pip. Basta digitar o seguinte comando no prompt de comando do Windows ou no PowerShell:
pip install reportlab
pip install reportlab
Observação: Ao instalar o Python, ele deve ser adicionado à variável de ambiente PATH para que o comando acima possa ser executado em qualquer lugar no cmd ou no PowerShell. Recomenda-se o uso do Pip for Python 3+, pois é a versão atualizada.
Abrir um novo arquivo Python
Para usar a biblioteca Reportlab, precisamos escrever o código em um arquivo Python e executá-lo para criar arquivos PDF.
- Pesquise e abra o shell padrão do IDLE do Python na barra de pesquisa do Windows e pressione Ctrl + N ou selecione "Novo Arquivo" na guia Arquivo. Isso abrirá o editor de texto para escrever o código.
- Em seguida, salve o arquivo com o nome apropriado. Vou dar o nome de "createpdf.py" .
Código Python para criar PDF
O código a seguir desenhará os elementos do documento e gerará um PDF em segundos:
# Importing required modules from ReportLab
from reportlab.pdfgen import canvas
from reportlab.pdfbase.ttfonts import TTFont
from reportlab.pdfbase import pdfmetrics
from reportlab.lib import colors
# File and document attributes
fileName = 'sample.pdf'
documentTitle = 'sample'
title = 'Create PDF'
subTitle = 'Using ReportLab !!'
# Creating a PDF object
pdf = canvas.Canvas(fileName)
# Setting the title of the document
pdf.setTitle(documentTitle)
# Registering a TrueType font
pdfmetrics.registerFont(TTFont('abc', 'Arial.ttf'))
# Creating the title by setting its font and placing it on the canvas
pdf.setFont('abc', 36)
pdf.drawCentredString(300, 770, title)
# Creating the subtitle by setting its font, color, and placing it on the canvas
pdf.setFillColorRGB(0, 0, 255) # Set color to blue
pdf.setFont("Courier-Bold", 24)
pdf.drawCentredString(290, 720, subTitle)
# Saving the PDF
pdf.save()
# Importing required modules from ReportLab
from reportlab.pdfgen import canvas
from reportlab.pdfbase.ttfonts import TTFont
from reportlab.pdfbase import pdfmetrics
from reportlab.lib import colors
# File and document attributes
fileName = 'sample.pdf'
documentTitle = 'sample'
title = 'Create PDF'
subTitle = 'Using ReportLab !!'
# Creating a PDF object
pdf = canvas.Canvas(fileName)
# Setting the title of the document
pdf.setTitle(documentTitle)
# Registering a TrueType font
pdfmetrics.registerFont(TTFont('abc', 'Arial.ttf'))
# Creating the title by setting its font and placing it on the canvas
pdf.setFont('abc', 36)
pdf.drawCentredString(300, 770, title)
# Creating the subtitle by setting its font, color, and placing it on the canvas
pdf.setFillColorRGB(0, 0, 255) # Set color to blue
pdf.setFont("Courier-Bold", 24)
pdf.drawCentredString(290, 720, subTitle)
# Saving the PDF
pdf.save()
Explicação do código
Após importar todos os módulos e pacotes, inicializamos todo o conteúdo que será gravado em um arquivo PDF.
fileName = 'sample.pdf'
documentTitle = 'sample'
title = 'Create PDF'
subTitle = 'Using ReportLab !!'
fileName = 'sample.pdf'
documentTitle = 'sample'
title = 'Create PDF'
subTitle = 'Using ReportLab !!'
Agora, criamos a tela do PDF, definimos o título do documento e, em seguida, adicionamos um título e um subtítulo centralizados na tela, com fontes e tamanhos apropriados.
# Creating a PDF object
pdf = canvas.Canvas(fileName)
# Setting the title of the document
pdf.setTitle(documentTitle)
# Registering a TrueType font
pdfmetrics.registerFont(TTFont('abc', 'Arial.ttf'))
# Creating the title by setting its font and placing it on the canvas
pdf.setFont('abc', 36)
pdf.drawCentredString(300, 770, title)
# Creating the subtitle by setting its font, color, and placing it on the canvas
pdf.setFillColorRGB(0, 0, 255) # Set color to blue
pdf.setFont("Courier-Bold", 24)
pdf.drawCentredString(290, 720, subTitle)
# Creating a PDF object
pdf = canvas.Canvas(fileName)
# Setting the title of the document
pdf.setTitle(documentTitle)
# Registering a TrueType font
pdfmetrics.registerFont(TTFont('abc', 'Arial.ttf'))
# Creating the title by setting its font and placing it on the canvas
pdf.setFont('abc', 36)
pdf.drawCentredString(300, 770, title)
# Creating the subtitle by setting its font, color, and placing it on the canvas
pdf.setFillColorRGB(0, 0, 255) # Set color to blue
pdf.setFont("Courier-Bold", 24)
pdf.drawCentredString(290, 720, subTitle)
Por fim, salvamos o arquivo PDF quando tudo estiver desenhado na tela.
# Saving the PDF
pdf.save()
# Saving the PDF
pdf.save()
Também podemos usar os métodos drawString e drawText para criar um arquivo PDF simples usando o Reportlab em Python.
Criando arquivos PDF usando a biblioteca PDFKit
A biblioteca PDFKit é uma das melhores abordagens para criar arquivos PDF em Python. Ele pode criar arquivos PDF usando código HTML. Você pode renderizar arquivos HTML simples e complexos, ou HTML a partir de URLs, em uma página PDF imprimível com qualidade de pixel perfeita. No entanto, o PDFKit integra recursos para converter HTML em PDF. Para instalar wkhtmltopdf para Windows, Linux e Mac, visite este link .
Nota: No sistema operacional Windows, wkhtmltopdf será instalado em Arquivos de Programas.
Instalação
Utilize o seguinte comando para instalar o PDFKit:
pip install pdfkit
pip install pdfkit
Como criar arquivos PDF a partir de uma URL
Criar arquivos PDF usando o PDFKit é muito simples e consiste em apenas uma linha de código.
import pdfkit
# Convert a webpage from a URL to a PDF file
pdfkit.from_url('http://google.com', 'out.pdf')
import pdfkit
# Convert a webpage from a URL to a PDF file
pdfkit.from_url('http://google.com', 'out.pdf')
Criando arquivos PDF a partir de arquivos HTML
import pdfkit
# Convert an HTML file to a PDF file
pdfkit.from_file('index.html', 'out.pdf')
import pdfkit
# Convert an HTML file to a PDF file
pdfkit.from_file('index.html', 'out.pdf')
Criando arquivos PDF a partir de modelos HTML
Você pode passar modelos HTML como uma string para convertê-los em um arquivo PDF como saída.
import pdfkit
# HTML content to convert to PDF
html_string = """
<html>
<head>
<meta name="pdfkit-page-size" content="Legal"/>
<meta name="pdfkit-orientation" content="Landscape"/>
</head>
<body>Hello World!</body>
</html>
"""
# Convert HTML string to a PDF file
pdfkit.from_string(html_string, 'out.pdf')
import pdfkit
# HTML content to convert to PDF
html_string = """
<html>
<head>
<meta name="pdfkit-page-size" content="Legal"/>
<meta name="pdfkit-orientation" content="Landscape"/>
</head>
<body>Hello World!</body>
</html>
"""
# Convert HTML string to a PDF file
pdfkit.from_string(html_string, 'out.pdf')
O PDFKit permite criar PDFs facilmente em Python usando modelos HTML.
A Biblioteca IronPDF
IronPDF é uma ferramenta útil para criar arquivos PDF em projetos .NET . Um uso comum desta biblioteca é a renderização de "HTML para PDF", onde o HTML é usado como linguagem de design para gerar um documento PDF.
O IronPDF utiliza um mecanismo .NET Chromium para renderizar páginas HTML em arquivos PDF. Com a conversão de HTML para PDF, não há necessidade de usar APIs complexas para posicionar ou formatar PDFs. O IronPDF também é compatível com todas as tecnologias padrão de páginas da web: HTML, ASPX, JS, CSS e imagens.
Ele também permite criar uma biblioteca PDF .NET usando HTML5, CSS, JavaScript e imagens. Você pode editar, carimbar e adicionar cabeçalhos e rodapés a um PDF sem esforço. Além disso, facilita muito a leitura de textos em PDF e a extração de imagens.
Para começar a usar o IronPDF, você precisa instalar o pacote NuGet (certifique-se de que esta etapa seja autenticada ou executada em um ambiente de desenvolvimento .NET ):
pip install ironpdf
O exemplo a seguir ajuda você a criar um PDF diretamente a partir de uma URL:
from ironpdf import ChromePdfRenderer
# Instantiate Renderer
renderer = ChromePdfRenderer()
# Create a PDF from a URL
pdf = renderer.RenderUrlAsPdf("https://ironpdf.com/")
# Export to a file
pdf.SaveAs("url.pdf")
from ironpdf import ChromePdfRenderer
# Instantiate Renderer
renderer = ChromePdfRenderer()
# Create a PDF from a URL
pdf = renderer.RenderUrlAsPdf("https://ironpdf.com/")
# Export to a file
pdf.SaveAs("url.pdf")
O código a seguir ajudará você a criar um arquivo PDF a partir de código HTML, juntamente com qualquer CSS ou JavaScript:
from ironpdf import ChromePdfRenderer
# Instantiate Renderer
renderer = ChromePdfRenderer()
# Create a PDF from an HTML string using Python
pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>")
# Export to a file
pdf.SaveAs("output.pdf")
# Advanced Example with HTML Assets
# Load external HTML assets: Images, CSS, and JavaScript.
# An optional BasePath is set as the file location to load assets from
myAdvancedPdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", base_path=r"C:\site\assets")
myAdvancedPdf.SaveAs("html-with-assets.pdf")
from ironpdf import ChromePdfRenderer
# Instantiate Renderer
renderer = ChromePdfRenderer()
# Create a PDF from an HTML string using Python
pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>")
# Export to a file
pdf.SaveAs("output.pdf")
# Advanced Example with HTML Assets
# Load external HTML assets: Images, CSS, and JavaScript.
# An optional BasePath is set as the file location to load assets from
myAdvancedPdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", base_path=r"C:\site\assets")
myAdvancedPdf.SaveAs("html-with-assets.pdf")
Como você pode ver no código acima, ele é bastante simples e limpo. São necessárias pouquíssimas linhas de código para criar um arquivo PDF a partir de código HTML. É uma solução rápida, confiável e que economiza tempo, com resultados precisos.
Baixe o IronPDF e experimente gratuitamente . Após o período de teste, o licenciamento começa em $799.




