Python中Pypdf包的断言错误

3 投票
1 回答
1731 浏览
提问于 2025-04-17 07:29

我在Windows平台上使用Python 2.4和PyPdf 1.13。
我想用下面的代码把一个列表里的PDF文件合并成一个文件:

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()

但是当我运行这段代码时,出现了以下错误。

  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

任何帮助都非常感谢。

1 个回答

1

根据来源:

            # 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

你遇到了那个“没有找到交叉引用表...”的情况。试着修改一下源代码,去掉那个检查,看看它是否还能正常工作。

撰写回答