Maison > développement back-end > Tutoriel Python > Comment ajouter du texte à un PDF existant à l'aide de Python et de modules externes ?

Comment ajouter du texte à un PDF existant à l'aide de Python et de modules externes ?

DDD
Libérer: 2024-10-22 15:30:03
original
379 Les gens l'ont consulté

How to add text to existing PDF using Python and External Modules?

Ajouter du texte à un PDF existant à l'aide de Python

Lorsque vous travaillez avec des documents PDF, il arrive souvent que du texte supplémentaire doive être ajouté. Cela peut aller de simples annotations à des filigranes complexes. Comme il n'existe pas de bibliothèque Python intégrée pour éditer des PDF, des modules externes doivent être utilisés pour obtenir cette fonctionnalité.

PyPDF et ReportLab

PyPDF et ReportLab sont deux options populaires pour manipuler des PDF en Python. . Cependant, aucun de ces modules ne prend en charge directement la modification de fichiers PDF existants. Ils sont principalement utilisés pour créer de nouveaux PDF avec un contenu personnalisé.

Combiner PyPDF et ReportLab

Pour ajouter du texte à un PDF existant, une combinaison de PyPDF et ReportLab peut être utilisée. Voici un exemple détaillé qui fonctionne à la fois sur Windows et Linux :

Exemple de code :

Python 2.7 :

<code class="python">from pyPdf import PdfFileWriter, PdfFileReader
import StringIO
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter

packet = StringIO.StringIO()
can = canvas.Canvas(packet, pagesize=letter)
can.drawString(10, 100, "Hello world")
can.save()

# move to the beginning of the StringIO buffer
packet.seek(0)

# create a new PDF with Reportlab
new_pdf = PdfFileReader(packet)
# read your existing PDF
existing_pdf = PdfFileReader(file("original.pdf", "rb"))
output = PdfFileWriter()
# add the "watermark" (which is the new pdf) on the existing page
page = existing_pdf.getPage(0)
page.mergePage(new_pdf.getPage(0))
output.addPage(page)
# finally, write "output" to a real file
outputStream = file("destination.pdf", "wb")
output.write(outputStream)
outputStream.close()</code>
Copier après la connexion

Python 3 .x :

<code class="python">from PyPDF2 import PdfFileWriter, PdfFileReader
import io
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter

packet = io.BytesIO()
can = canvas.Canvas(packet, pagesize=letter)
can.drawString(10, 100, "Hello world")
can.save()

# move to the beginning of the StringIO buffer
packet.seek(0)

# create a new PDF with Reportlab
new_pdf = PdfFileReader(packet)
# read your existing PDF
existing_pdf = PdfFileReader(open("original.pdf", "rb"))
output = PdfFileWriter()
# add the "watermark" (which is the new pdf) on the existing page
page = existing_pdf.pages[0]
page.merge_page(new_pdf.pages[0])
output.add_page(page)
# finally, write "output" to a real file
output_stream = open("destination.pdf", "wb")
output.write(output_stream)
output_stream.close()</code>
Copier après la connexion

Cette solution combine efficacement la flexibilité de ReportLab pour créer du texte en filigrane avec les capacités de manipulation de page de PyPDF.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal