Maison  >  Article  >  développement back-end  >  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
DDDoriginal
2024-10-22 15:30:03254parcourir

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>

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>

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!

Déclaration:
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