Crea file PDF con Python

2024-01-09 08:05:49

PDF (Portable Document Format) è un formato di file popolare ampiamente utilizzato per generare documenti legali, contratti, report, fatture, manuali, eBook e altro ancora. Fornisce un formato versatile e affidabile per condividere, archiviare e presentare documenti elettronici in modo coerente, indipendente da qualsiasi software, hardware o sistema operativo.

Considerati questi vantaggi, la generazione automatizzata di documenti PDF sta diventando sempre più importante in vari campi. Per automatizzare il processo di creazione di PDF in Python, puoi scrivere script che generano PDF in base a requisiti specifici o dati di input. Questo articolo fornirà esempi dettagliati per dimostrare come utilizzare Python per creare file PDF a livello di programmazione.

Libreria di generatori PDF Python

Per generare PDF utilizzando Python, dovremo utilizzare la libreria Spire.PDF for Python. È una potente libreria Python che fornisce funzionalità di generazione ed elaborazione di PDF. Con esso, possiamo usare Python per creare PDF da zero e aggiungere vari elementi PDF alle pagine PDF.

Per installare la libreria del generatore PDF Python, è sufficiente utilizzare il seguente comando pip per eseguire l'installazione da PyPI:

pip install Spire.PDF

Conoscenze di base

Prima di iniziare, impariamo alcune nozioni di base sulla creazione di un file PDF utilizzando la libreria Spire.PDF for Python.

Pagina PDF: una pagina in Spire.PDF for Python è rappresentata dalla classe PdfPageBase, che consiste in un'area client e margini tutt'intorno. L'area del contenuto consente agli utenti di scrivere vari contenuti e i margini sono generalmente bordi vuoti.

Sistema di coordinate: come mostrato nella figura seguente, l'origine del sistema di coordinate sulla pagina si trova nell'angolo in alto a sinistra dell'area client, con l'asse x che si estende orizzontalmente verso destra e l'asse y che si estende verticalmente verso il basso. Tutti gli elementi aggiunti all'area client si basano sulle coordinate X e Y specificate.

Create PDF Files with Python

Classi e metodi: la tabella seguente elenca alcune delle classi e dei metodi principali utilizzati per creare PDF in Python.

Membro Descrizione
Classe PdfDocument Rappresenta un modello di documento PDF.
Classe PdfPageBase Rappresenta una pagina in un documento PDF.
Classe PdfSolidBrush Rappresenta un pennello che riempie qualsiasi oggetto con un colore a tinta unita.
Classe PdfTrueTypeFont Rappresenta un carattere di tipo vero.
Classe PdfStringFormat Rappresenta informazioni sul formato del testo, come allineamento, spaziatura dei caratteri e rientro.
Classe PdfTextWidget Rappresenta l'area di testo con la possibilità di estendersi su più pagine.
Classe PdfTextLayout Rappresenta le informazioni sul layout del testo.
Metodo PdfDocument.Pages.Add() Aggiunge una pagina a un documento PDF.
Metodo PdfPageBase.Canvas.DrawString() Disegna la stringa nella posizione specificata su una pagina con il carattere e gli oggetti pennello specificati.
Metodo PdfPageBase.Canvas.DrawImage() Disegna un'immagine in una posizione specifica su una pagina.
Metodo PdfTextWidget.Draw() Disegna il widget di testo nella posizione specificata su una pagina.
Metodo PdfDocument.SaveToFile() Salva il documento in un file PDF.

Come creare PDF utilizzando Python

Di seguito sono riportati i passaggi principali per la creazione di file PDF in Python:

  • Installa Spire.PDF for Python.
  • Importa moduli.
  • Crea un documento PDF tramite la classe PdfDocument.
  • Aggiungi una pagina al PDF utilizzando il metodo PdfDocument.Pages.Add() e restituisce un oggetto della classe PdfPageBase.
  • Crea il pennello e il carattere PDF desiderati.
  • Disegna una stringa di testo o un widget di testo a una coordinata specificata sulla pagina PDF utilizzando il metodo PdfPageBase.Canvas.DrawString() o PdfTextWidget.Draw().
  • Salva il documento PDF utilizzando il metodo PdfDocument.SaveToFile().

Python per creare file PDF da zero

L'esempio di codice seguente illustra come utilizzare Python per creare un file PDF e inserire testo e immagini. Con Spire.PDF for Python puoi anche inserire altri elementi PDF come elenchi, collegamenti ipertestuali, moduli e timbri.

  • 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 per generare PDF da file di testo

L'esempio di codice seguente mostra il processo di lettura del testo da un file .txt e di disegno in una posizione specifica su una pagina 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 per creare un PDF a più colonne

I PDF a più colonne sono comunemente usati nelle riviste o nei giornali. L'esempio di codice seguente mostra il processo di creazione di un PDF a due colonne disegnando il testo in due aree rettangolari separate su una pagina 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

Licenza gratuita per la creazione di PDF in Python

Puoi ottenere una licenza temporanea gratuita di Spire.PDF for Python per generare documenti PDF senza filigrane e limitazioni.

Conclusione

Questo post del blog ha fornito una guida passo passo su come creare file PDF in base al sistema di coordinate definito nella libreria Spire.PDF for Python. Negli esempi di codice puoi conoscere il processo e i metodi per inserire testo e immagini nei PDF e convertire i file TXT in PDF. Se desideri esplorare altre funzionalità di elaborazione e conversione PDF della libreria PDF Python, puoi consultare la sua documentazione online.

Per qualsiasi problema durante l'utilizzo, contatta il nostro team di supporto tecnico tramite e-mail o forum.

Guarda anche