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 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é.
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 :
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!