Crear archivos PDF con Python

2024-01-09 08:08:24

PDF (Formato de documento portátil) es un formato de archivo popular ampliamente utilizado para generar documentos legales, contratos, informes, facturas, manuales, libros electrónicos y más. Proporciona un formato versátil y confiable para compartir, almacenar y presentar documentos electrónicos de manera consistente, independientemente de cualquier software, hardware o sistema operativo.

Dadas estas ventajas, la generación automatizada de documentos PDF está adquiriendo cada vez más importancia en diversos campos. Para automatizar el proceso de creación de PDF en Python, puede escribir scripts que generen archivos PDF en función de requisitos específicos o datos de entrada. Este artículo proporcionará ejemplos detallados para demostrar cómo utilizar Python para crear archivos PDF programáticamente.

Biblioteca generadora de PDF de Python

Para generar PDF usando Python, necesitaremos usar la biblioteca Spire.PDF for Python. Es una potente biblioteca de Python que proporciona capacidades de generación y procesamiento de PDF. Con él, podemos usar Python para crear archivos PDF desde cero y agregar varios elementos PDF a las páginas PDF.

Para instalar la biblioteca del generador de PDF de Python, simplemente use el siguiente comando pip para instalar desde PyPI:

pip install Spire.PDF

Conocimiento de fondo

Antes de comenzar, aprendamos algunos antecedentes sobre cómo crear un archivo PDF usando la biblioteca Spire.PDF for Python.

Página PDF: una página en Spire.PDF for Python está representada por la clase PdfPageBase, que consta de un área de cliente y márgenes alrededor. El área de contenido es para que los usuarios escriban diversos contenidos y los márgenes suelen ser bordes en blanco.

Sistema de coordenadas: como se muestra en la figura siguiente, el origen del sistema de coordenadas en la página se encuentra en la esquina superior izquierda del área del cliente, con el eje x extendiéndose horizontalmente hacia la derecha y el eje y extendiéndose verticalmente hacia abajo. Todos los elementos agregados al área del cliente se basan en las coordenadas X e Y especificadas.

Create PDF Files with Python

Clases y métodos: la siguiente tabla enumera algunas de las clases y métodos principales utilizados para crear archivos PDF en Python.

Miembro Descripción
Clase de documento Pdf Representa un modelo de documento PDF.
Clase PdfPageBase Representa una página en un documento PDF.
Clase PdfSolidBrush Representa un pincel que rellena cualquier objeto con un color sólido.
Clase PdfTrueTypeFont Representa una fuente de tipo verdadero.
Clase PdfStringFormat Representa información de formato de texto, como alineación, espaciado entre caracteres y sangría.
Clase PdfTextWidget Representa el área de texto con capacidad de abarcar varias páginas.
Clase PdfTextLayout Representa la información de diseño del texto.
Método PdfDocument.Pages.Add() Agrega una página a un documento PDF.
Método PdfPageBase.Canvas.DrawString() Dibuja una cadena en la ubicación especificada en una página con fuentes y objetos de pincel especificados.
Método PdfPageBase.Canvas.DrawImage() Dibuja una imagen en una ubicación específica de una página.
Método PdfTextWidget.Draw() Dibuja el widget de texto en la ubicación especificada en una página.
Método PdfDocument.SaveToFile() Guarda el documento en un archivo PDF.

Cómo crear PDF usando Python

Los siguientes son los pasos principales para crear archivos PDF en Python:

  • Instale Spire.PDF for Python.
  • Importar módulos.
  • Cree un documento PDF a través de la clase PdfDocument.
  • Agregue una página al PDF usando el método PdfDocument.Pages.Add() y devuelva un objeto de la clase PdfPageBase.
  • Cree el pincel y la fuente PDF que desee.
  • Dibuje una cadena de texto o un widget de texto en una coordenada especificada en la página PDF utilizando el método PdfPageBase.Canvas.DrawString() o PdfTextWidget.Draw().
  • Guarde el documento PDF utilizando el método PdfDocument.SaveToFile().

Python para crear archivos PDF desde cero

El siguiente ejemplo de código demuestra cómo usar Python para crear un archivo PDF e insertar texto e imágenes. Con Spire.PDF for Python, también puedes insertar otros elementos PDF como listas, hipervínculos, formularios y sellos.

  • 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 generar PDF a partir de un archivo de texto

El siguiente ejemplo de código muestra el proceso de leer texto de un archivo .txt y dibujarlo en una ubicación específica en una 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 crear un PDF de varias columnas

Los PDF de varias columnas se utilizan habitualmente en revistas o periódicos. El siguiente ejemplo de código muestra el proceso de creación de un PDF de dos columnas dibujando texto en dos áreas rectangulares separadas en una 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

Licencia gratuita para crear PDF en Python

Puede obtenga una licencia temporal gratuita de Spire.PDF for Python para generar documentos PDF sin marcas de agua ni limitaciones.

Conclusión

Esta publicación de blog proporciona una guía paso a paso sobre cómo crear archivos PDF basados en el sistema de coordenadas definido en la biblioteca Spire.PDF for Python. En los ejemplos de código, puede obtener información sobre el proceso y los métodos para insertar texto e imágenes en archivos PDF y convertir archivos TXT a PDF. Si desea explorar otras funciones de conversión y procesamiento de PDF de la biblioteca PDF de Python, puede consultar su documentación en línea.

Para cualquier problema durante el uso, comuníquese con nuestro equipo de soporte técnico por correo electrónico o foro.

Ver también