Ak98
Ak98

Reputation: 15

PyPDF2: TypeError: '_VirtualList' object is not callable

I'm trying to fill pdf form using pypdf2 library and here is my code below, i have tried using the example below but no luck yet.

import PyPDF2

# Open the PDF form
pdf_file = open('Update Form - Final fill.pdf', 'rb')
pdf_reader = PyPDF2.PdfReader(pdf_file)
print(pdf_reader)
pdf_writer = PyPDF2.PdfWriter()

# Loop through each page of the PDF form
for page_num in range (len(pdf_reader.pages)):
    page = pdf_reader.pages(page_num)
    
    # Fill out the form fields
    if page.get('/Annots'):
        for annot in page['/Annots']:
            if annot.get('/T'):
                key = annot.get('/T')[1:-1]
                if key == 'date':
                    annot.update({
                        '/V': '(Your date)'
                    })
                elif key == 'form#':
                    annot.update({
                        '/V': '(form number)'
                    })
                elif key == 'handler':
                    annot.update({
                        '/V': '(our handler)'
                    })
    
    pdf_writer.addPage(page)

# Save the filled-out PDF form
filled_pdf = open('filled_form.pdf', 'wb')
pdf_writer.write(filled_pdf)

# Close the PDF files
pdf_file.close()
filled_pdf.close()

and i get this error

<PyPDF2._reader.PdfReader object at 0x0000019C93082650>
Traceback (most recent call last):
  File "c:\Users\alkad\OneDrive\Desktop\Test Python\TestPython.py", line 11, in <module>
    page = pdf_reader.pages(page_num)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: '_VirtualList' object is not callable

Any help ?

wanted to fill the pdf and save it.

Upvotes: 0

Views: 1641

Answers (1)

Martin Thoma
Martin Thoma

Reputation: 136845

As @Jorj McKie pointed out, you need to use square brackets:

pdf_reader.pages[page_num]

Upvotes: 1

Related Questions