IndirectObject относится к реальному объекту (это как ссылка или псевдоним, так что общий размер PDF может быть уменьшен, когда один и тот же контент появляется в нескольких местах). Метод getObject даст вам реальный объект.
Если объект является текстовым объектом, то просто выполнение str () или unicode () над объектом должно получить данные внутри него.
Кроме того, pyPdf сохраняет объекты в атрибуте resolvedObjects. Например, PDF, содержащий этот объект:
13 0 obj
<< /Type /Catalog /Pages 3 0 R >>
endobj
Может быть прочитано с этим:
>>> import pyPdf
>>> pdf = pyPdf.PdfFileReader(open("pdffile.pdf"))
>>> pages = list(pdf.pages)
>>> pdf.resolvedObjects
{0: {2: {'/Parent': IndirectObject(3, 0), '/Contents': IndirectObject(4, 0), '/Type': '/Page', '/Resources': IndirectObject(6, 0), '/MediaBox': [0, 0, 595.2756, 841.8898]}, 3: {'/Kids': [IndirectObject(2, 0)], '/Count': 1, '/Type': '/Pages', '/MediaBox': [0, 0, 595.2756, 841.8898]}, 4: {'/Filter': '/FlateDecode'}, 5: 147, 6: {'/ColorSpace': {'/Cs1': IndirectObject(7, 0)}, '/ExtGState': {'/Gs2': IndirectObject(9, 0), '/Gs1': IndirectObject(10, 0)}, '/ProcSet': ['/PDF', '/Text'], '/Font': {'/F1.0': IndirectObject(8, 0)}}, 13: {'/Type': '/Catalog', '/Pages': IndirectObject(3, 0)}}}
>>> pdf.resolvedObjects[0][13]
{'/Type': '/Catalog', '/Pages': IndirectObject(3, 0)}