Crie arquivos PDF com Python

2024-01-09 08:11:47

PDF (Portable Document Format) é um formato de arquivo popular amplamente utilizado para gerar documentos jurídicos, contratos, relatórios, faturas, manuais, e-books e muito mais. Fornece um formato versátil e confiável para compartilhar, armazenar e apresentar documentos eletrônicos de maneira consistente, independente de qualquer software, hardware ou sistema operacional.

Dadas estas vantagens, a geração automatizada de documentos PDF está se tornando cada vez mais importante em vários campos. Para automatizar o processo de criação de PDF em Python, você pode escrever scripts que geram PDFs com base em requisitos específicos ou dados de entrada. Este artigo fornecerá exemplos detalhados para demonstrar como usar Python para criar arquivos PDF programaticamente.

Biblioteca geradora de PDF em Python

Para gerar PDF usando Python, precisaremos usar a biblioteca Spire.PDF for Python. É uma biblioteca Python poderosa que fornece recursos de geração e processamento de PDF. Com ele, podemos usar python para criar PDFs do zero e adicionar vários elementos PDF às páginas PDF.

Para instalar a biblioteca do gerador de PDF Python, basta usar o seguinte comando pip para instalar a partir do PyPI:

pip install Spire.PDF

Conhecimento prévio

Antes de começar, vamos aprender algumas informações básicas sobre como criar um arquivo PDF usando a biblioteca Spire.PDF for Python.

Página PDF: Uma página no Spire.PDF for Python é representada pela classe PdfPageBase, que consiste em uma área do cliente e margens ao redor. A área de conteúdo serve para os usuários escreverem vários conteúdos, e as margens geralmente são bordas em branco.

Sistema de Coordenadas: Conforme mostrado na figura abaixo, a origem do sistema de coordenadas na página está localizada no canto superior esquerdo da área do cliente, com o eixo x estendendo-se horizontalmente para a direita e o eixo y estendendo-se verticalmente para baixo. Todos os elementos adicionados à área do cliente são baseados nas coordenadas X e Y especificadas.

Create PDF Files with Python

Classes e métodos: a tabela a seguir lista algumas das principais classes e métodos usados para criar PDFs em Python.

Membro Descrição
Classe PDFDocument Representa um modelo de documento PDF.
Classe PDFPageBase Representa uma página em um documento PDF.
Classe PDFSolidBrush Representa um pincel que preenche qualquer objeto com uma cor sólida.
Classe PDFTrueTypeFont Representa uma fonte True Type.
Classe PDFStringFormat Representa informações de formato de texto, como alinhamento, espaçamento de caracteres e recuo.
Classe PDFTextWidget Representa a área de texto com capacidade de abranger várias páginas.
Classe PDFTextLayout Representa as informações de layout de texto.
Método PdfDocument.Pages.Add() Adiciona uma página a um documento PDF.
Método PdfPageBase.Canvas.DrawString() Desenha uma string no local especificado em uma página com fonte e objetos de pincel especificados.
Método PdfPageBase.Canvas.DrawImage() Desenha uma imagem em um local especificado em uma página.
Método PdfTextWidget.Draw() Desenha o widget de texto no local especificado em uma página.
Método PdfDocument.SaveToFile() Salva o documento em um arquivo PDF.

Como criar PDF usando Python

A seguir estão as etapas principais para criar arquivos PDF em Python:

  • Instale Spire.PDF for Python.
  • Importe módulos.
  • Crie um documento PDF por meio da classe PdfDocument.
  • Adicione uma página ao PDF usando o método PdfDocument.Pages.Add() e retorne um objeto da classe PdfPageBase.
  • Crie o pincel e a fonte do PDF desejados.
  • Desenhe uma string de texto ou widget de texto em uma coordenada especificada na página PDF usando o método PdfPageBase.Canvas.DrawString() ou PdfTextWidget.Draw().
  • Salve o documento PDF usando o método PdfDocument.SaveToFile().

Python para criar arquivos PDF do zero

O exemplo de código a seguir demonstra como usar Python para criar um arquivo PDF e inserir texto e imagens. Com o Spire.PDF for Python, você também pode inserir outros elementos PDF, como listas, hiperlinks, formulários e carimbos.

  • Python
from spire.pdf.common import *
from spire.pdf import *

# Create a pdf document
pdf = PdfDocument()

# Add a page to the PDF
page = pdf.Pages.Add()

# Specify title text and paragraph content
titleText = "Spire.PDF for Python"
paraText = "Spire.PDF for Python is a professional PDF development component that enables developers to create, read, edit, convert, and save PDF files in Python programs without depending on any external applications or libraries. This Python PDF class library provides developers with various functions to create PDF files from scratch or process existing PDF documents completely through Python programs."

# Create solid brushes
titleBrush = PdfSolidBrush(PdfRGBColor(Color.get_Blue()))
paraBrush = PdfSolidBrush(PdfRGBColor(Color.get_Black()))

# Create fonts
titleFont = PdfFont(PdfFontFamily.Helvetica, 14.0, PdfFontStyle.Bold)
paraFont = PdfTrueTypeFont("Arial", 12.0, PdfFontStyle.Regular, True)

# Set the text alignment
textAlignment = PdfStringFormat(PdfTextAlignment.Center, PdfVerticalAlignment.Middle)

# Draw title on the page
page.Canvas.DrawString(titleText, titleFont, titleBrush, page.Canvas.ClientSize.Width / 2, 40.0, textAlignment)

# Create a PdfTextWidget object to hold the paragraph content
textWidget = PdfTextWidget(paraText, paraFont, paraBrush)

# Create a rectangle where the paragraph content will be placed
rect = RectangleF(PointF(0.0, 50.0), page.Canvas.ClientSize)

# Set the text layout
textLayout = PdfTextLayout()
textLayout.Layout = PdfLayoutType.Paginate

# Draw the widget on the page
textWidget.Draw(page, rect, textLayout)

# Load an image
image = PdfImage.FromFile("Python.png")

# Draw the image at a specified location on the page
page.Canvas.DrawImage(image, 12.0, 130.0)

#Save the PDF document
pdf.SaveToFile("CreatePDF.pdf")
pdf.Close()

Create PDF Files with Python

Python para gerar PDF a partir de arquivo de texto

O exemplo de código a seguir mostra o processo de leitura de texto de um arquivo .txt e desenhá-lo em um local especificado em uma página PDF.

  • Python
from spire.pdf.common import *
from spire.pdf import *

def ReadFromTxt(fname: str) -> str:
    with open(fname, 'r') as f:
        text = f.read()
    return text

# Create a pdf document
pdf = PdfDocument()

# Add a page to the PDF
page = pdf.Pages.Add(PdfPageSize.A4(), PdfMargins(20.0, 20.0))

# Create a PdfFont and brush
font = PdfFont(PdfFontFamily.TimesRoman, 12.0)
brush = PdfBrushes.get_Black()

# Get content from a .txt file
text = ReadFromTxt("text.txt")

# Create a PdfTextWidget object to hold the text content
textWidget = PdfTextWidget(text, font, brush)

# Create a rectangle where the text content will be placed
rect = RectangleF(PointF(0.0, 50.0), page.Canvas.ClientSize)

# Set the text layout
textLayout = PdfTextLayout()
textLayout.Layout = PdfLayoutType.Paginate

# Draw the widget on the page
textWidget.Draw(page, rect, textLayout)

# Save the generated PDF file
pdf.SaveToFile("GeneratePdfFromText.pdf", FileFormat.PDF)
pdf.Close()

Create PDF Files with Python

Python para criar um PDF com várias colunas

PDFs com várias colunas são comumente usados em revistas ou jornais. O exemplo de código a seguir mostra o processo de criação de um PDF de duas colunas desenhando texto em duas áreas retangulares separadas em uma página PDF.

  • Python
from spire.pdf.common import *
from spire.pdf import *

# Creates a PDF document
pdf = PdfDocument()

# Add a page to the PDF
page = pdf.Pages.Add()

# Define paragraph text
s1 = "Databases allow access to various services which, in turn, allow you to access your accounts and perform transactions all across the internet. " + "For example, your bank's login page will ping a database to figure out if you've entered the right password and username. " + "Your favorite online shop pings your credit card's database to pull down the funds needed to buy that item you've been eyeing."
s2 = "Databases make research and data analysis much easier because they are highly structured storage areas of data and information. " + "This means businesses and organizations can easily analyze databases once they know how a database is structured. " + "Common structures and common database querying languages (e.g., SQL) make database analysis easy and efficient."

# Get width and height of page
pageWidth = page.GetClientSize().Width
pageHeight = page.GetClientSize().Height

# Create a PDF font and brush
font = PdfFont(PdfFontFamily.TimesRoman, 12.0)
brush = PdfBrushes.get_Black()

# Set the text alignment
format = PdfStringFormat(PdfTextAlignment.Left)

# Draws text at a specified location on the page
page.Canvas.DrawString(s1, font, brush, RectangleF(10.0, 20.0, pageWidth / 2 - 8, pageHeight), format)
page.Canvas.DrawString(s2, font, brush, RectangleF(pageWidth / 2 + 8, 20.0, pageWidth / 2 - 8, pageHeight), format)

# Save the PDF document
pdf.SaveToFile("CreateTwoColumnPDF.pdf")
pdf.Close()

Create PDF Files with Python

Licença gratuita para criação de PDF em Python

Você pode obtenha uma licença temporária gratuita do Spire.PDF for Python para gerar documentos PDF sem marcas d'água e limitações.

Conclusão

Esta postagem do blog forneceu um guia passo a passo sobre como criar arquivos PDF com base no sistema de coordenadas definido na biblioteca Spire.PDF for Python. Nos exemplos de código, você pode aprender sobre o processo e métodos de inserção de texto, imagens em PDFs e conversão de arquivos TXT em PDFs. Se quiser explorar outros recursos de processamento e conversão de PDF da biblioteca Python PDF, você pode verificar sua documentação online.

Para qualquer problema durante o uso, entre em contato com nossa equipe de suporte técnico por e-mail ou fórum.

Veja também