MCPcopy Index your code
hub / github.com/clips/pattern / PDFXRef

Class PDFXRef

pattern/web/pdf/pdfparser.py:60–147  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

58## PDFXRef
59##
60class PDFXRef(PDFBaseXRef):
61
62 def __init__(self):
63 self.offsets = {}
64 self.trailer = {}
65 return
66
67 def load(self, parser, debug=0):
68 while 1:
69 try:
70 (pos, line) = parser.nextline()
71 if not line.strip(): continue
72 except PSEOF:
73 raise PDFNoValidXRef('Unexpected EOF - file corrupted?')
74 if not line:
75 raise PDFNoValidXRef('Premature eof: %r' % parser)
76 if line.startswith('trailer'):
77 parser.seek(pos)
78 break
79 f = line.strip().split(' ')
80 if len(f) != 2:
81 raise PDFNoValidXRef('Trailer not found: %r: line=%r' % (parser, line))
82 try:
83 (start, nobjs) = map(long, f)
84 except ValueError:
85 raise PDFNoValidXRef('Invalid line: %r: line=%r' % (parser, line))
86 for objid in xrange(start, start+nobjs):
87 try:
88 (_, line) = parser.nextline()
89 except PSEOF:
90 raise PDFNoValidXRef('Unexpected EOF - file corrupted?')
91 f = line.strip().split(' ')
92 if len(f) != 3:
93 raise PDFNoValidXRef('Invalid XRef format: %r, line=%r' % (parser, line))
94 (pos, genno, use) = f
95 if use != 'n': continue
96 self.offsets[objid] = (int(genno), long(pos))
97 if 1 <= debug:
98 print >>sys.stderr, 'xref objects:', self.offsets
99 self.load_trailer(parser)
100 return
101
102 KEYWORD_TRAILER = KWD('trailer')
103 def load_trailer(self, parser):
104 try:
105 (_,kwd) = parser.nexttoken()
106 assert kwd is self.KEYWORD_TRAILER
107 (_,dic) = parser.nextobject()
108 except PSEOF:
109 x = parser.pop(1)
110 if not x:
111 raise PDFNoValidXRef('Unexpected EOF - file corrupted')
112 (_,dic) = x[0]
113 self.trailer.update(dict_value(dic))
114 return
115
116 PDFOBJ_CUE = re.compile(r'^(\d+)\s+(\d+)\s+obj\b')
117 def load_fallback(self, parser, debug=0):

Callers 2

read_xref_fromMethod · 0.85
read_xrefMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…