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.
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.
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