3

我在 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

任何帮助是极大的赞赏。

4

1 回答 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

您遇到了后者“未找到交叉引用表......”的情况。尝试修补源代码,省略断言,看看它是否仍然有效。

于 2011-12-01T17:18:18.083 回答