Reads XRefs from the given location.
(self, start, xrefs)
| 704 | |
| 705 | # read xref table |
| 706 | def read_xref_from(self, start, xrefs): |
| 707 | """Reads XRefs from the given location.""" |
| 708 | self.seek(start) |
| 709 | self.reset() |
| 710 | try: |
| 711 | (pos, token) = self.nexttoken() |
| 712 | except PSEOF: |
| 713 | raise PDFNoValidXRef('Unexpected EOF') |
| 714 | if 2 <= self.debug: |
| 715 | print >>sys.stderr, 'read_xref_from: start=%d, token=%r' % (start, token) |
| 716 | if isinstance(token, int): |
| 717 | # XRefStream: PDF-1.5 |
| 718 | self.seek(pos) |
| 719 | self.reset() |
| 720 | xref = PDFXRefStream() |
| 721 | xref.load(self, debug=self.debug) |
| 722 | else: |
| 723 | if token is self.KEYWORD_XREF: |
| 724 | self.nextline() |
| 725 | xref = PDFXRef() |
| 726 | xref.load(self, debug=self.debug) |
| 727 | xrefs.append(xref) |
| 728 | trailer = xref.get_trailer() |
| 729 | if 1 <= self.debug: |
| 730 | print >>sys.stderr, 'trailer: %r' % trailer |
| 731 | if 'XRefStm' in trailer: |
| 732 | pos = int_value(trailer['XRefStm']) |
| 733 | self.read_xref_from(pos, xrefs) |
| 734 | if 'Prev' in trailer: |
| 735 | # find previous xref |
| 736 | pos = int_value(trailer['Prev']) |
| 737 | self.read_xref_from(pos, xrefs) |
| 738 | return |
| 739 | |
| 740 | # read xref tables and trailers |
| 741 | def read_xref(self): |
no test coverage detected