Créer des fichiers PDF avec Python

2024-01-09 07:26:01

PDF (Portable Document Format) est un format de fichier populaire largement utilisé pour générer des documents juridiques, des contrats, des rapports, des factures, des manuels, des livres électroniques, etc. Il fournit un format polyvalent et fiable pour partager, stocker et présenter des documents électroniques de manière cohérente, indépendamment de tout logiciel, matériel ou système d'exploitation.

Compte tenu de ces avantages, la génération automatisée de documents PDF devient de plus en plus importante dans divers domaines. Pour automatiser le processus de création de PDF en Python, vous pouvez écrire des scripts qui génèrent des PDF en fonction d'exigences spécifiques ou de données d'entrée. Cet article donnera des exemples détaillés pour montrer comment utiliser Python pour créer des fichiers PDF par programmation.

Bibliothèque de générateur de PDF Python

Pour générer des PDF à l'aide de Python, nous devrons utiliser la bibliothèque Spire.PDF for Python. Il s'agit d'une puissante bibliothèque Python qui offre des capacités de génération et de traitement de PDF. Avec lui, nous pouvons utiliser Python pour créer des PDF à partir de zéro et ajouter divers éléments PDF aux pages PDF.

Pour installer la bibliothèque du générateur Python PDF, utilisez simplement la commande pip suivante pour l'installer à partir de PyPI:

pip install Spire.PDF

Connaissances de base

Avant de commencer, apprenons quelques informations sur la création d'un fichier PDF à l'aide de la bibliothèque Spire.PDF for Python library.

Page PDF: une page dans Spire.PDF for Python est représentée par la classe PdfPageBase, qui se compose d'une zone client et de marges tout autour. La zone de contenu permet aux utilisateurs d'écrire divers contenus, et les marges sont généralement des bords vierges.

Système de coordonnées: comme le montre la figure ci-dessous, l'origine du système de coordonnées sur la page est située dans le coin supérieur gauche de la zone client, l'axe des x s'étendant horizontalement vers la droite et l'axe des y s'étendant verticalement vers le bas. Tous les éléments ajoutés à la zone client sont basés sur les coordonnées X et Y spécifiées.

Create PDF Files with Python

Classes et méthodes: le tableau suivant répertorie certaines des classes et méthodes de base utilisées pour créer des PDF en Python.

Membre Description
Classe PDFDocument Représente un modèle de document PDF.
Classe PDFPageBase Représente une page dans un document PDF.
Classe PDFSolidBrush Représente un pinceau qui remplit n’importe quel objet avec une couleur unie.
Classe PDFTrueTypeFont Représente une police True Type.
Classe PDFStringFormat Représente les informations de format de texte, telles que l'alignement, l'espacement des caractères et le retrait.
Classe PDFTextWidget Représente la zone de texte avec la possibilité de s'étendre sur plusieurs pages.
Classe PdfTextLayout Représente les informations de mise en page du texte.
Méthode PdfDocument.Pages.Add() Ajoute une page à un document PDF.
Méthode PdfPageBase.Canvas.DrawString() Dessine une chaîne à l’emplacement spécifié sur une page avec les objets de police et de pinceau spécifiés.
Méthode PdfPageBase.Canvas.DrawImage() Dessine une image à un emplacement spécifié sur une page.
Méthode PdfTextWidget.Draw() Dessine le widget de texte à l'emplacement spécifié sur une page.
Méthode PdfDocument.SaveToFile() Enregistre le document dans un fichier PDF.

Comment créer un PDF avec Python

Voici les principales étapes de création de fichiers PDF en Python :

  • Installez Spire.PDF for Python.
  • Importer des modules.
  • Créez un document PDF via la classe PdfDocument.
  • Ajoutez une page au PDF à l'aide de la méthode PdfDocument.Pages.Add() et renvoyez un objet de la classe PdfPageBase.
  • Créez le pinceau et la police PDF souhaités.
  • Dessinez une chaîne de texte ou un widget de texte à une coordonnée spécifiée sur la page PDF à l'aide de la méthode PdfPageBase.Canvas.DrawString() ou PdfTextWidget.Draw().
  • Enregistrez le document PDF à l'aide de la méthode PdfDocument.SaveToFile().

Python pour créer des fichiers PDF à partir de zéro

L'exemple de code suivant montre comment utiliser Python pour créer un fichier PDF et insérer du texte et des images. Avec Spire.PDF for Python, vous pouvez également insérer d'autres éléments PDF tels que listes, hyperliens, formulaires et tampons.

  • 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 pour générer un PDF à partir d'un fichier texte

L'exemple de code suivant montre le processus de lecture du texte d'un fichier .txt et de son dessin vers un emplacement spécifié sur une page 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 pour créer un PDF multi-colonnes

Les PDF multicolonnes sont couramment utilisés dans les magazines ou les journaux. L'exemple de code suivant montre le processus de création d'un PDF à deux colonnes en dessinant du texte dans deux zones rectangulaires distinctes sur une page 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

Licence gratuite pour créer des PDF en Python

Tu peux obtenez une licence temporaire gratuite de Spire.PDF for Python pour générer des documents PDF sans filigranes ni limitations.

Conclusion

Cet article de blog fournit un guide étape par étape sur la façon de créer des fichiers PDF basés sur le système de coordonnées défini dans la bibliothèque Spire.PDF for Python. Dans les exemples de code, vous pouvez en apprendre davantage sur le processus et les méthodes d'insertion de texte, d'images dans des PDF et de conversion de fichiers TXT en PDF. Si vous souhaitez explorer d'autres fonctionnalités de traitement et de conversion PDF de la bibliothèque Python PDF, vous pouvez consulter son documentation en ligne.

Pour tout problème d'utilisation, contactez notre équipe d'assistance technique via e-mail ou forum.

Voir également