I am trying to edit an existing pdf file using PyPDF and ReportLab. When I try to position the red circle and red text, it appears to be hiding behind a white container or something. If I position it anywhere else, it works fine. What is causing this?
sample pdf = https://www.puc.nh.gov/regulatory/CASEFILE/2010/10-246/INITIAL%20FILING%20-%20PETITION/10-246%202010-09-13%20BAYRING%20ATT%20TO%20PET%20FOR%20AUTH%20TO%20CONSTRUCT%20UTILITY%20CABLE%20OVER%20AND%20ACROSS%20SUNCOOK%20RIVER.PDF
WHAT THE ERROR IS:
WHAT THE FINAL RESULT SHOULD BE:
from PyPDF2 import PdfWriter, PdfReader
import io
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter
from reportlab.lib.colors import red
def main():
packet = io.BytesIO()
can = canvas.Canvas(packet, pagesize=letter)
can.setFillColorRGB(1, 0, 0)
can.circle(370,780,20,fill=1)
can.setFillColor(red)
can.setFont("Times-Roman", 14)
can.drawString(352, 785, "Customer Group #22")
can.save()
packet.seek(0)
new_pdf = PdfReader(packet)
existing_pdf = PdfReader(open("samplePDF.pdf", "rb"))
output = PdfWriter()
page = existing_pdf.pages[1]
page.merge_page(new_pdf.pages[0])
output.add_page(page)
outputStream = open("finalPDF.pdf", "wb")
output.write(outputStream)
outputStream.close()
if __name__ == "__main__":
main()
Try using PdfFileWriter and PdfFileReader instead of not PdfWriter and PdfReader, and The merge_page method should be called on a PdfFileWriter object, not a PdfFileReader object.
Try this code :
from PyPDF2 import PdfFileWriter, PdfFileReader
import io
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter
from reportlab.lib.colors import red
def main():
packet = io.BytesIO()
can = canvas.Canvas(packet, pagesize=letter)
can.setFillColorRGB(1, 0, 0)
can.circle(370,780,20,fill=1)
can.setFillColor(red)
can.setFont("Times-Roman", 14)
can.drawString(352, 785, "Customer Group #22")
can.save()
packet.seek(0)
new_pdf_reader = PdfFileReader(packet)
existing_pdf_reader = PdfFileReader(open("samplePDF.pdf", "rb"))
output = PdfFileWriter()
page = existing_pdf_reader.getPage(0)
page.mergePage(new_pdf_reader.getPage(0))
output.addPage(page)
outputStream = open("finalPDF.pdf", "wb")
output.write(outputStream)
outputStream.close()
if __name__ == "__main__":
main()
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With