Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Assertion Error in Pypdf package in Python

Tags:

python

pypdf

I am using Python 2.4 and PyPdf 1.13 on a Windows platform. I am trying to merge PDF files from a list into one using the following code:

import os
from pyPdf import PdfFileWriter, PdfFileReader

attached=["C:\\test\\T_tech.pdf","C:\\test\\00647165-Backup.pdf"]
output=PdfFileWriter()
maxpage=0

os.chdir("C:\\test")
name= attached[0]
name = os.path.basename(name).split('.')[0]

for nam in attached:
   input= PdfFileReader(file(nam,"rb"))  
   maxpage=input.getNumPages()
   for i in range(0,maxpage):
     output.addPage(input.getPage(i))

outputStream =file("Output-"+name+".pdf","wb")
output.write(outputStream)
outputStream.close()

I am getting the following error when I run this code.

  Traceback (most recent call last):
    File "C:\Python24\pdfmerge.py", line 13, in ?
       input= PdfFileReader(file(nam,"rb"))
    File "C:\Python24\Lib\site-packages\pyPdf\pdf.py", line 374, in __init__
       self.read(stream)
    File "C:\Python24\Lib\site-packages\pyPdf\pdf.py", line 847, in read
       assert False
  AssertionError

Any help is greatly appreciated.

like image 639
gaya3 Avatar asked May 13 '26 06:05

gaya3


1 Answers

From the source:

            # bad xref character at startxref.  Let's see if we can find
            # the xref table nearby, as we've observed this error with an
            # off-by-one before.
            stream.seek(-11, 1)
            tmp = stream.read(20)
            xref_loc = tmp.find("xref")
            if xref_loc != -1:
                startxref -= (10 - xref_loc)
                continue
            else:
                # no xref table found at specified location
                assert False
                break

You're hitting that latter "no cross reference table found..." condition. Try patching the source, omitting the assertion and see if it still works.

like image 174
Brian Cain Avatar answered May 14 '26 20:05

Brian Cain



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!