library existing python pdf

existing - Agregar texto a PDF existente usando Python



python edit pdf (8)

Ejemplo para [Python 2.7]:

from pyPdf import PdfFileWriter, PdfFileReader import StringIO from reportlab.pdfgen import canvas from reportlab.lib.pagesizes import letter packet = StringIO.StringIO() # create a new PDF with Reportlab 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) 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()

Ejemplo para Python 3.x:

from PyPDF2 import PdfFileWriter, PdfFileReader import io from reportlab.pdfgen import canvas from reportlab.lib.pagesizes import letter packet = io.BytesIO() # create a new PDF with Reportlab 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) 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.getPage(0) page.mergePage(new_pdf.getPage(0)) output.addPage(page) # finally, write "output" to a real file outputStream = open("destination.pdf", "wb") output.write(outputStream) outputStream.close()

Necesito agregar texto adicional a un PDF existente usando Python, cuál es la mejor manera de hacerlo y qué módulos adicionales necesitaré instalar.

Nota: Idealmente, me gustaría poder ejecutar esto tanto en Windows como en Linux, pero con un solo empujón Linux solo lo hará.

Gracias por adelantado.
Ricardo.

Editar: pyPDF y ReportLab se ven bien, pero ninguno me permite editar un PDF existente, ¿hay alguna otra opción?


¿Has probado pyPdf ?

Lo sentimos, no tiene la capacidad de modificar el contenido de una página.


Aprovechando la answer anterior, los siguientes trabajos en Python 2.7.13:

from PyPDF2 import PdfFileWriter, PdfFileReader, PdfFileMerger import StringIO from reportlab.pdfgen import canvas from reportlab.lib.pagesizes import letter packet = StringIO.StringIO() # create a new PDF with Reportlab can = canvas.Canvas(packet, pagesize=letter) can.drawString(290, 720, "Hello world") can.save() #move to the beginning of the StringIO buffer packet.seek(0) new_pdf = PdfFileReader(packet) # read your existing PDF existing_pdf = PdfFileReader("original.pdf") 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 = open("destination.pdf", "wb") output.write(outputStream) outputStream.close()


Puede tener más suerte dividiendo el problema en convertir PDF en un formato editable, escribiendo sus cambios, y luego convirtiéndolo de nuevo en PDF. No conozco una biblioteca que le permita editar PDF directamente, pero hay muchos convertidores entre DOC y PDF, por ejemplo.


Sé que esta es una publicación más antigua, pero pasé un largo tiempo tratando de encontrar una solución. Encontré una decente usando ReportLab y PyPDF, así que pensé en compartir:

  1. lea su PDF usando PdfFileReader (), llamaremos esta entrada
  2. cree un nuevo pdf que contenga su texto para agregar usando ReportLab, guárdelo como un objeto de cadena
  3. lee el objeto de cadena usando PdfFileReader (), llamaremos a este texto
  4. crear un nuevo objeto PDF usando PdfFileWriter (), llamaremos a esta salida
  5. iterar a través de la entrada y aplicar .mergePage ( texto .getPage (0)) para cada página a la que desee agregar el texto, luego use la salida .addPage () para agregar las páginas modificadas a un nuevo documento

Esto funciona bien para adiciones de texto simples. Vea la muestra de PyPDF para filmar un documento con marca de agua.

Aquí hay un código para responder la pregunta a continuación:

packet = StringIO.StringIO() can = canvas.Canvas(packet, pagesize=letter) <do something with canvas> can.save() packet.seek(0) input = PdfFileReader(packet)

Desde aquí puede fusionar las páginas del archivo de entrada con otro documento



cpdf hará el trabajo desde la línea de comandos. Sin embargo, no es python (afaik):

cpdf -add-text "Line of text" input.pdf -o output .pdf


pdfrw le permitirá leer en páginas de un PDF existente y dibujarlas en un lienzo de informe (similar al dibujo de una imagen). Hay ejemplos para esto en el subdirectorio pdfrw examples/rl1 en github. Descargo de responsabilidad: soy el autor pdfrw.