我正在使用 Python 3.6.5 将PDF合并在一起,但遇到了问题 . 下面的代码抛出 'TypeError: 'NumberObject' object is not subscriptable' 错误 . 我究竟做错了什么?当我用 merger.append 注释掉该行时,它会正确打印出文件路径 .

import webbrowser
import os
from PyPDF2 import PdfFileMerger, PdfFileReader

path = 'C:/test/pdfs'
merger = PdfFileMerger()
for pdf in os.listdir(path):
      merger.append(PdfFileReader(open(os.path.join(path,pdf), 'rb')))
      print(os.path.join(path,pdf))
merger.write(path+'/merged.pdf')
merger.close()
webbrowser.open_new(path+'/merged.pdf')

文件“C:\ test \ pdftest.py”,第9行,在merger.append中(PdfFileReader(open(os.path.join(path,pdf),'rb')))文件“C:\ python \ lib \ site-packages \ pypdf2-1.26.0-py3.6.egg \ PyPDF2 \ pdf.py“,第1084行,在init self.read(stream)文件”C:\ python \ lib \ site-packages \ pypdf2- 1.26.0-py3.6.egg \ PyPDF2 \ pdf.py“,第1805行,读取断言xrefstream [”/ Type“] ==”/ XRef“TypeError:'NumberObject'对象不可订阅

当我更改merger.append以获取文件路径时,我得到:

文件“C:\ test \ pdftest.py”,第9行,在merger.append(os.path.join(path,pdf))文件“C:\ python \ lib \ site-packages \ pypdf2-1.26.0 -py3.6.egg \ PyPDF2 \ merger.py“,第203行,附加self.merge(len(self.pages),fileobj,bookmark,pages,import_bookmarks)文件”C:\ python \ lib \ site-packages \ pypdf2-1.26.0-py3.6.egg \ PyPDF2 \ merger.py“,第133行,在合并pdfr = PdfFileReader(fileobj,strict = self.strict)文件”C:\ python \ lib \ site-packages \ pypdf2-1.26.0-py3.6.egg \ PyPDF2 \ pdf.py“,第1084行,在init self.read(stream)文件”C:\ python \ lib \ site-packages \ pypdf2-1.26.0-py3 .6.egg \ PyPDF2 \ pdf.py“,第1805行,读取断言xrefstream [”/ Type“] ==”/ XRef“TypeError:'NumberObject'对象不可订阅

更新:它看起来像文件夹中的一个PDF导致了这一点 . 与PDF不同的唯一不同之处在于它使用Type 1字体而其他PDF使用TrueType字体 . 有没有人知道解决方法或修复此问题?