Code Monkey home page Code Monkey logo

pdfminer's Introduction

PDFMiner

PDFMiner is a text extraction tool for PDF documents.

Build Status PyPI

Warning: As of 2020, PDFMiner is not actively maintained. The code still works, but this project is largely dormant. For the active project, check out its fork pdfminer.six.

Features:

  • Pure Python (3.6 or above).
  • Supports PDF-1.7. (well, almost)
  • Obtains the exact location of text as well as other layout information (fonts, etc.).
  • Performs automatic layout analysis.
  • Can convert PDF into other formats (HTML/XML).
  • Can extract an outline (TOC).
  • Can extract tagged contents.
  • Supports basic encryption (RC4 and AES).
  • Supports various font types (Type1, TrueType, Type3, and CID).
  • Supports CJK languages and vertical writing scripts.
  • Has an extensible PDF parser that can be used for other purposes.

How to Use:

  1. > pip install pdfminer
  2. > pdf2txt.py samples/simple1.pdf

Command Line Syntax:

pdf2txt.py

pdf2txt.py extracts all the texts that are rendered programmatically. It also extracts the corresponding locations, font names, font sizes, writing direction (horizontal or vertical) for each text segment. It does not recognize text in images. A password needs to be provided for restricted PDF documents.

> pdf2txt.py [-P password] [-o output] [-t text|html|xml|tag]
             [-O output_dir] [-c encoding] [-s scale] [-R rotation]
             [-Y normal|loose|exact] [-p pagenos] [-m maxpages]
             [-S] [-C] [-n] [-A] [-V]
             [-M char_margin] [-L line_margin] [-W word_margin]
             [-F boxes_flow] [-d]
             input.pdf ...
  • -P password : PDF password.
  • -o output : Output file name.
  • -t text|html|xml|tag : Output type. (default: automatically inferred from the output file name.)
  • -O output_dir : Output directory for extracted images.
  • -c encoding : Output encoding. (default: utf-8)
  • -s scale : Output scale.
  • -R rotation : Rotates the page in degree.
  • -Y normal|loose|exact : Specifies the layout mode. (only for HTML output.)
  • -p pagenos : Processes certain pages only.
  • -m maxpages : Limits the number of maximum pages to process.
  • -S : Strips control characters.
  • -C : Disables resource caching.
  • -n : Disables layout analysis.
  • -A : Applies layout analysis for all texts including figures.
  • -V : Automatically detects vertical writing.
  • -M char_margin : Speficies the char margin.
  • -W word_margin : Speficies the word margin.
  • -L line_margin : Speficies the line margin.
  • -F boxes_flow : Speficies the box flow ratio.
  • -d : Turns on Debug output.

dumppdf.py

dumppdf.py is used for debugging PDFs. It dumps all the internal contents in pseudo-XML format.

> dumppdf.py [-P password] [-a] [-p pageid] [-i objid]
             [-o output] [-r|-b|-t] [-T] [-O directory] [-d]
             input.pdf ...
  • -P password : PDF password.
  • -a : Extracts all objects.
  • -p pageid : Extracts a Page object.
  • -i objid : Extracts a certain object.
  • -o output : Output file name.
  • -r : Raw mode. Dumps the raw compressed/encoded streams.
  • -b : Binary mode. Dumps the uncompressed/decoded streams.
  • -t : Text mode. Dumps the streams in text format.
  • -T : Tagged mode. Dumps the tagged contents.
  • -O output_dir : Output directory for extracted streams.

TODO

  • Replace STRICT variable with something better.
  • Improve the debugging functions.
  • Use logging module instead of sys.stderr.
  • Proper test cases.
  • PEP-8 and PEP-257 conformance.
  • Better documentation.
  • Crypto stream filter support.

Related Projects

pdfminer's People

Contributors

ashleyblackmore avatar begnini avatar cancan101 avatar dangra avatar daniel-km avatar euske avatar flameeyes avatar jcushman avatar jordanreiter avatar jwilk avatar lucanaso avatar mduggan avatar meisterluk avatar naren8642 avatar native-api avatar pablocastellano avatar rsennrich avatar sorced-jim avatar vinayak-mehta avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pdfminer's Issues

PNG predictor fails to decode xref streams

The xref stream as found in the PDF: http://molnar.es/xref_stream_original
The xref stream as decompressed by pdfminer: http://molnar.es/xref_stream_pdfminer
The xref stream as decompressed by qpdf: http://molnar.es/xref_stream_qpdf

The commands used to decompress the stream:

$ ./tools/dumppdf.py -b -i 60 x.pdf >/tmp/xref_stream_pdfminer
$ qpdf --show-object=60 --filtered-stream-data x.pdf >/tmp/xref_stream_qpdf

It turns out that the valid decompression is the one produced by qpdf. There's a python implementation that gets it right, maybe you could check it to see the differences.

Error

Traceback (most recent call last):

Traceback (most recent call last):
  File "/usr/local/bin/pdf2txt.py", line 116, in <module>
    if __name__ == '__main__': sys.exit(main(sys.argv))
  File "/usr/local/bin/pdf2txt.py", line 108, in main
    caching=caching, check_extractable=True):
  File "/usr/local/lib/python2.7/dist-packages/pdfminer/pdfpage.py", line 120, in get_pages
    doc = PDFDocument(parser, password=password, caching=caching)
  File "/usr/local/lib/python2.7/dist-packages/pdfminer/pdfdocument.py", line 559, in __init__
    xref.load(parser)
  File "/usr/local/lib/python2.7/dist-packages/pdfminer/pdfdocument.py", line 200, in load
    (_, obj) = parser1.nextobject()
  File "/usr/local/lib/python2.7/dist-packages/pdfminer/psparser.py", line 557, in nextobject
    (pos, token) = self.nexttoken()
  File "/usr/local/lib/python2.7/dist-packages/pdfminer/psparser.py", line 483, in nexttoken
    self.charpos = self._parse1(self.buf, self.charpos)
  File "/usr/local/lib/python2.7/dist-packages/pdfminer/psparser.py", line 346, in _parse_literal
    self._add_token(LIT(unicode(self._curtoken)))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 9: ordinal not in range(128)

Python 3 compatibility

Hey @euske, looks like this package doesn't support Python 3 yet. Do you have any plans for it?

Also let us know if you are looking for help there :)

empty catalog element for some forms

I recently upgraded from a version from 2011 to the current one. Ever since there is a small fraction of pdf forms i process using pdfminer, which have an empty catalog element. These files process just fine in the 2011/05/19 version. As said this only affects a handful of files, but it's still annoying.

If i manually save the pdf as a copy using acrobat i can extract the data again. So that's my workaround for the time being, but that's not exactly a longterm solution.

not working:
http://s000.tinyupload.com/index.php?file_id=39340119331144410122

working:
http://s000.tinyupload.com/index.php?file_id=01156674973034545708

update...
as a better workaround i added pdftk into my toolchain which does nothing, but open and save the pdf again which seems to produce a pdf that is parseable by pdfminer. pdftk has no issues with the file at all. so while the pdf is probably malformed it would still be good to fix this issue.

handle_undefined_char

WARNING! I believe that this is currently not an issue.

I'm trying to extract text from a pdf file using pdf2txt.py, everything works fine, but I get (cid:%d) for each letter.

I see:

try:
    text = font.to_unichr(cid)
    assert isinstance(text, unicode), text
except PDFUnicodeNotDefined:

So ok I guess it's not unicode. What can I do then ? Is there a solution ? because even if it's not unicode, it has to be something, what to do with this numbers ?
Maybe I could add some more check to handle different encoding ?
How can I do it ? Will you give me some advises, guide me to do it ?

What's the point of pdfminer/cmap?

This just seems like an empty directory and it's not clear what the point is? I suggest either adding a docstring to __init__.py or removing the directory.

AssertionError about LTTextLineHorizontal

I encountered this assertion failure:

Traceback (most recent call last):
  File "/home/andreas/mypython-moin2/local/lib/python2.7/site-packages/moin-2.0.0a0-py2.7.egg/MoinMoin/storage/middleware/indexing.py", line 214, in convert_to_indexable
    doc = conv(rev, input_contenttype)
  File "/home/andreas/mypython-moin2/local/lib/python2.7/site-packages/moin-2.0.0a0-py2.7.egg/MoinMoin/converter/pdf_in.py", line 62, in __call__
    process_pdf(rsrcmgr, device, rev)
  File "/home/andreas/mypython-moin2/local/lib/python2.7/site-packages/pdfminer-20110515-py2.7.egg/pdfminer/pdfinterp.py", line 832, in process_pdf
    interpreter.process_page(page)
  File "/home/andreas/mypython-moin2/local/lib/python2.7/site-packages/pdfminer-20110515-py2.7.egg/pdfminer/pdfinterp.py", line 758, in process_page
    self.device.end_page(page)
  File "/home/andreas/mypython-moin2/local/lib/python2.7/site-packages/pdfminer-20110515-py2.7.egg/pdfminer/converter.py", line 37, in end_page
    self.cur_item.analyze(self.laparams)
  File "/home/andreas/mypython-moin2/local/lib/python2.7/site-packages/pdfminer-20110515-py2.7.egg/pdfminer/layout.py", line 625, in analyze
    textboxes = list(self.get_textboxes(laparams, textlines))
  File "/home/andreas/mypython-moin2/local/lib/python2.7/site-packages/pdfminer-20110515-py2.7.egg/pdfminer/layout.py", line 533, in get_textboxes
    assert line in neighbors, line
AssertionError: <LTTextLineHorizontal 2150.524,2186.725,2150.560,2202.437 u'r'>

Using this file: https://cs.nyu.edu/courses/fall12/CSCI-GA.2945-001/dl/lec4.pdf

pdfminer slow processing pdf

Most of the time, pdf2txt.py runs relatively quickly, but there are occassions where it is extremely slow. For example, converting [this document] took over an hour on my laptop

vagrant@dev:/vagrant/web$ time pdf2txt.py -o kk.html path/to/doc.pdf
real    66m55.634s
user    66m5.976s
sys 0m31.610s

Any idea what is going on here?

Maximum recursion depth exceeded while calling a Python object

I got "maximum recursion depth exceeded" error when tried to parse the PDF CME Volume. Here is my code

import sys
import io

from pdfminer.layout import LAParams
from pdfminer.pdfinterp import PDFResourceManager, process_pdf
from pdfminer.converter import TextConverter

def main():

    # setup
    fp = io.open("pdfs\\sample.pdf", 'rb')
    password = ''
    pagenos = set()
    maxpages = 0
    codec = 'utf-8'
    laparams = LAParams()
    caching = True
    rsrcmgr = PDFResourceManager(caching=caching)

    # processing
    outfp = io.open('output.txt', 'wt', encoding=codec, errors='ignore')
    device = TextConverter(rsrcmgr, outfp, laparams=laparams)
    process_pdf(rsrcmgr, device, fp, pagenos, maxpages=maxpages,
                         password=password, caching=caching, check_extractable=True)
    fp.close()
    device.close()
    print('finished converting')

This is the error received

File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 430, in set_parser
    self.info.append(dict_value(trailer['Info']))
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 531, in getobj
    self._parse_everything()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 328, in _parse_everything
    self._parse_whole(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 310, in _parse_whole
    objid, genno, obj = self._parse_next_object(parser)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 287, in _parse_next_object
    _, obj = parser.nextobject()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 280, in nextobject
    self.do_keyword(pos, token)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 684, in do_keyword
    objlen = int_value(dic['Length'])
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 92, in typecheck_value
    x = resolve1(x)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 58, in resolve1
    x = x.resolve()
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdftypes.py", line 47, in resolve
    return self.doc.getobj(self.objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 528, in getobj
    result = self._getobj(objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\pdfparser.py", line 341, in _getobj
    handle_error(PDFSyntaxError, 'Cannot locate objid=%r' % objid)
  File "C:\Users\william.hua\ExchangeDataEnv\lib\site-packages\pdfminer\psparser.py", line 22, in handle_error
    logging.warning(msg)
  File "C:\Users\william.hua\AppData\Local\Continuum\Anaconda3\lib\logging\__init__.py", line 1809, in warning
    root.warning(msg, *args, **kwargs)
  File "C:\Users\william.hua\AppData\Local\Continuum\Anaconda3\lib\logging\__init__.py", line 1279, in warning
    self._log(WARNING, msg, args, **kwargs)
  File "C:\Users\william.hua\AppData\Local\Continuum\Anaconda3\lib\logging\__init__.py", line 1392, in _log
    fn, lno, func, sinfo = self.findCaller(stack_info)
  File "C:\Users\william.hua\AppData\Local\Continuum\Anaconda3\lib\logging\__init__.py", line 1349, in findCaller
    filename = os.path.normcase(co.co_filename)
  File "C:\Users\william.hua\AppData\Local\Continuum\Anaconda3\lib\ntpath.py", line 85, in normcase
    if not isinstance(s, (bytes, str)):
RuntimeError: maximum recursion depth exceeded while calling a Python object

Export to PDF

I'd like the option to export to a new PDF, after parsing the original and making some modifications. I'm possibility willing to implement this, but would like some advice on whether this will be trivial or not, and where I should start? From what I've seen the current serialisers all assume they will be outputting to a text based format.

adopt semantic versioning

When pdfminer changes, it's impossible to know if it's likely to break the API. It would be nice if it used semantic versioning so that it was clear.

KeyError: 'Resources' on some files

You can find the file here

from pdfminer.pdfparser import PDFParser
from pdfminer.pdfdocument import PDFDocument
from pdfminer.pdfpage import PDFPage
from pdfminer.pdfpage import PDFTextExtractionNotAllowed
from pdfminer.pdfinterp import PDFResourceManager
from pdfminer.pdfinterp import PDFPageInterpreter
from pdfminer.pdfdevice import PDFDevice

fp = open('impius - orumPatres1.pdf', 'rb')

parser = PDFParser(fp)
document = PDFDocument(parser, password)
if not document.is_extractable:
    raise PDFTextExtractionNotAllowed
rsrcmgr = PDFResourceManager()
device = PDFDevice(rsrcmgr)
interpreter = PDFPageInterpreter(rsrcmgr, device)
for page in PDFPage.create_pages(document):
    interpreter.process_page(page)

Result :

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/jc/.virtualenvs/pdfquery/lib/python2.7/site-packages/pdfminer/pdfpage.py", line 100, in create_pages
    yield klass(document, objid, tree)
  File "/Users/jc/.virtualenvs/pdfquery/lib/python2.7/site-packages/pdfminer/pdfpage.py", line 52, in __init__
    self.resources = resolve1(self.attrs['Resources'])
KeyError: 'Resources'

How to get pdf2txt.py to return the extracted text?

I'm trying to adjust the pdf2txt.py file in the tools folder so that I can use it as a module in the rest of my program. I managed to reduce it to the following:

#!/usr/bin/env python
import sys
from pdfminer.pdfdocument import PDFDocument
from pdfminer.pdfparser import PDFParser
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.pdfpage import PDFPage
from pdfminer.converter import TextConverter
from pdfminer.cmapdb import CMapDB
from pdfminer.layout import LAParams

def main(fp):
    debug = 0
    pagenos = set()
    maxpages = 0
    imagewriter = None
    codec = 'utf-8'
    caching = True
    laparams = LAParams()

    PDFDocument.debug = debug
    PDFParser.debug = debug
    CMapDB.debug = debug
    PDFPageInterpreter.debug = debug

    resourceManager = PDFResourceManager(caching=caching)
    outfp = sys.stdout
    device = TextConverter(resourceManager, outfp, codec=codec, laparams=laparams, imagewriter=imagewriter)
    interpreter = PDFPageInterpreter(resourceManager, device)
    for page in PDFPage.get_pages(fp, pagenos, maxpages=maxpages, caching=caching, check_extractable=True):
        interpreter.process_page(page)
    fp.close()
    device.close()
    outfp.close()
    return  # Here I want to return the extracted text string

It currently prints out the resulting strings using sys.stdout.write(), where I actually want it to return those strings using the return statement on the last line of my adjusted code. Since the use of that sys.stdout.write is hidden deep on lines 165-167 in converter.py, I don't really know how to get this method to return those strings instead of writing it to stdout.

Does anybody know how I could get this method to return the found strings instead of writing them to stdout? All tips are welcome!

Transfer ownership of project

This repo has been idle for more than a year, despite many community members' interest.

If you're not interested in maintaining the project, transfer it to someone else who is interested.

CID keyed font issue?

Trying to convert a file such as this one http://www.ofsted.gov.uk/provider/files/961765/urn/121051.pdf will produce output similar to <span style="font-family: 272Ef04aTahoma; font-size:8px">(cid:34)(cid:22)(cid:25)(cid:33) (cid:25... instead of letters. One problem is off course the CIDs instead of letters, the other a peculiar font name 272Ef04aTahoma instead of just Tahoma.

This is on OS X Lion with cmap installed using "make camp" as well as without.
I have not tested on other operating systems but this issue pertains in the current pypi download as well as master git repository.

I have used pdf2txt.py -o output.html myfile.pdf as well as other avenues.

TypeError: unsupported operand type(s) for +: 'PDFObjRef' and 'int'

When running pdfminer.get_pages on the pdf at the link below, you get the following exception:

  File "C:\Users\speedplane\Documents\Work\2010 - 2011\Programs\DocketUpdater\..\DocketUpdater\libs\pdfminer\pdfparser.py", line 518, in get_pages
    yield PDFPage(self, pageid, tree)
  File "C:\Users\speedplane\Documents\Work\2010 - 2011\Programs\DocketUpdater\..\DocketUpdater\libs\pdfminer\pdfparser.py", line 263, in __init__
    self.rotate = (self.attrs.get('Rotate', 0)+360) % 360
TypeError: unsupported operand type(s) for +: 'PDFObjRef' and 'int'

The problem is due to the code in pdfminer.pdfparser in the PDFPage.__init__ function:
self.rotate = (self.attrs.get('Rotate', 0)+360) % 360

The problem arises when the Rotate field is an object reference instead of an integer. When we add object references to an integer, we get an exception. The solution is to change that line to the following:
self.rotate = (resolve1(self.attrs.get('Rotate', 0))+360) % 360

Here is the link to the PDF, perhaps useful for regression testing.

https://www.docketalarm.com/cases/International_Trade_Commission/337-850/Certain_Electronic_Imaging_Devices/491834/1/

Can HTMLConverter and XMLConverter output document metadata?

I'm not familiar enough with the PDFMiner API to patch this myself, but it would be really useful if the dict returned by pdfdocument.info could be serialized by the HTMLConverter and XMLConverter classes, e.g.

<meta name="author" content="J. Smith" />
<meta name="title" content="Title of PDF as given in the metadata" />

Thanks

AttributeError: 'FileUnicodeMap' object has no attribute 'add_code2cid'

File "/cygdrive/e/Downloads/euske-pdfminer-3d16529/test/lib/python2.6/site-packages/pdfminer/pdfinterp.py", line 832, in process_pdf
interpreter.process_page(page)
File "/cygdrive/e/Downloads/euske-pdfminer-3d16529/test/lib/python2.6/site-packages/pdfminer/pdfinterp.py", line 757, in process_page
self.render_contents(page.resources, page.contents, ctm=ctm)
File "/cygdrive/e/Downloads/euske-pdfminer-3d16529/test/lib/python2.6/site-packages/pdfminer/pdfinterp.py", line 768, in render_contents
self.init_resources(resources)
File "/cygdrive/e/Downloads/euske-pdfminer-3d16529/test/lib/python2.6/site-packages/pdfminer/pdfinterp.py", line 339, in init_resources
self.fontmap[fontid] = self.rsrcmgr.get_font(objid, spec)
File "/cygdrive/e/Downloads/euske-pdfminer-3d16529/test/lib/python2.6/site-packages/pdfminer/pdfinterp.py", line 193, in get_font
font = self.get_font(None, subspec)
File "/cygdrive/e/Downloads/euske-pdfminer-3d16529/test/lib/python2.6/site-packages/pdfminer/pdfinterp.py", line 184, in get_font
font = PDFCIDFont(self, spec)
File "/cygdrive/e/Downloads/euske-pdfminer-3d16529/test/lib/python2.6/site-packages/pdfminer/pdffont.py", line 643, in init
CMapParser(self.unicode_map, StringIO(strm.get_data())).run()
File "/cygdrive/e/Downloads/euske-pdfminer-3d16529/test/lib/python2.6/site-packages/pdfminer/cmapdb.py", line 299, in run
self.nextobject()
File "/cygdrive/e/Downloads/euske-pdfminer-3d16529/test/lib/python2.6/site-packages/pdfminer/psparser.py", line 584, in nextobject
self.do_keyword(pos, token)
File "/cygdrive/e/Downloads/euske-pdfminer-3d16529/test/lib/python2.6/site-packages/pdfminer/cmapdb.py", line 359, in do_keyword
self.cmap.add_code2cid(x, cid+i)
AttributeError: 'FileUnicodeMap' object has no attribute 'add_code2cid'

Still have issues with CID Characters

I am trying to extract information from this file; http://www.kantei.go.jp/jp/singi/tiiki/siryou/pdf/h25yosan2.pdf

Following the example code on the pdfminer website, I put together this simple code which tries to extract text using LTTextBoxHorizontal class, I get the output as

(cid:5561)(cid:6210)(cid:18446)(cid:18449)(cid:5562)(cid:2979)(cid:10220)(cid:6715)(cid:5587)(cid:7244)(cid:18171)(cid:9490)(cid:18202)(cid:13240)(cid:18190)(cid:18204)(cid:18159)(cid:4485)(cid:4582)(cid:8049)(cid:5878)(cid:3820)(cid:6795)(cid:10183)

and not the Japanese unicode characters. I get similar results when using the pdf2txt.py tool.

Could someone suggest what I should do to resolve this?
Thank you in advance.

Code

from pdfminer.pdfparser import PDFParser
from pdfminer.pdfdocument import PDFDocument
from pdfminer.pdfpage import PDFPage
from pdfminer.pdfinterp import PDFResourceManager
from pdfminer.pdfinterp import PDFPageInterpreter
from pdfminer.pdfdevice import PDFDevice
from pdfminer.layout import LTTextBoxHorizontal
from pdfminer.layout import LAParams
from pdfminer.converter import PDFPageAggregator

# Open a PDF file.
fp = open('/Users/Documents/h25yosan2.pdf', 'rb')
password=''
# Create a PDF parser object associated with the file object.
parser = PDFParser(fp)
# Create a PDF document object that stores the document structure.
document = PDFDocument(parser)
# Supply the password for initialization.
# (If no password is set, give an empty string.)
document.initialize(password)
# Create a PDF resource manager object that stores shared resources.
rsrcmgr = PDFResourceManager()
# Set parameters for analysis.
laparams = LAParams()

# Create a PDF page aggregator object.
device = PDFPageAggregator(rsrcmgr, laparams=laparams)
interpreter = PDFPageInterpreter(rsrcmgr, device)
for page in PDFPage.create_pages(document):
    interpreter.process_page(page)
    # receive the LTPage object for the page.
    layout = device.get_result()
    objstack = list(reversed(layout._objs))

    while objstack:
        b = objstack.pop()
        if type(b) == LTTextBoxHorizontal: # Text Box H
            print "get text line is %s" % b.get_text().encode('utf-8')

pdftotext (xpdf/poppler) works but 'pdf2txt.html -t html' does not

I have a PDF file which is extracting whole text from PDF file with pdftotext by poppler but pdf2txt by PDFMiner fails to extract whole text.

Although pdftotext by poppler gives an error but extract whole text.

Error: PDF file is damaged - attempting to reconstruct xref table...

Looks like xpdf got some reconstruction ability and PDFMiner didn't.

PDFs with Invisible and Zero Width Text Yield Incorrect Layout

When extracting text from the pdf here:
https://www.docketalarm.com/cases/International_Trade_Commission/337-819/Certain_Semiconductor_Chips_with_DRAM_Circuitry_and_Modules_and_Products_Containing_Same/docs/509926/1.pdf

You get the following text:
https://www.docketalarm.com/cases/International_Trade_Commission/337-819/Certain_Semiconductor_Chips_with_DRAM_Circuitry_and_Modules_and_Products_Containing_Same/509926/1/?text

Notice that spaces are not respected.

This is caused because, for whatever reason, within this PDF, there are many characters that have zero width. The logic that determines whether text is on the same line in layout.py does not work with zero width text.

allow grep in xml output

The XML output often contains no text words, but has each character as an individual <text ...>C elements.
This patch proposes to add the string of words as a text="..." attribute to the parent element, so that browsing, debugging, and using grep is better supported.

--- euske-pdfminer-c770904/pdfminer/converter.py.orig   2011-11-07 14:29:24.000000000 +0000
+++ euske-pdfminer-c770904/pdfminer/converter.py    2011-12-20 18:07:57.312326172 +0000
@@ -442,7 +442,11 @@ class XMLConverter(PDFConverter):
                     render(child)
                 self.outfp.write('</figure>\n')
             elif isinstance(item, LTTextLine):
-                self.outfp.write('<textline bbox="%s">\n' % bbox2str(item.bbox))
+                child_str = ''
+                for child in item:
+                    if isinstance(child, LTChar):
+                        child_str += child.get_text()
+                self.outfp.write('<textline bbox="%s" text="%s">\n' % (bbox2str(item.bbox),enc(child_str)))
                 for child in item:
                     render(child)
                 self.outfp.write('</textline>\n')

Google Group ? path color question ...

sorry, didn't find how to post my question on https://groups.google.com/forum/#!forum/pdfminer-users ...

I have to read vector graphics on a single pdf page as list of graphic Entities (Lines, Circles etc.) My code is below, mostly taken from an example I found. 2 questions:

  1. is it the correct approach to define my own PDFDevice class ?
  2. how to obtain the Entity/path stroke color instead of the 'black' constant ?

Thanks !

def read_pdf(filename):
res=[]

    class _Device(PDFDevice):
        def paint_path(self, graphicstate, stroke, fill, evenodd, path):
            e=Entity.from_pdf(path,'black')
            if e:
                res.append(e)
            else:
                pass  #sometimes the path is empty ... TODO find why

    fp = open(filename, 'rb')
    parser = PDFParser(fp)
    document = PDFDocument(parser, '')
    rsrcmgr = PDFResourceManager()
    device = _Device(rsrcmgr)
    interpreter = PDFPageInterpreter(rsrcmgr, device)
    page=PDFPage.create_pages(document).next() #process only first page
    interpreter.process_page(page)
    return res

Exception in PDF to text extraction

When trying to parse PDF at http://www.ada.gov/hospcombrprt.pdf, I get the following error:

pdfdocument.py", line 348, in _initialize_password
    raise PDFEncryptionError('Unknown algorithm: param=%r' % param)
pdfminer.pdfdocument.PDFEncryptionError: Unknown algorithm: param={'CF': {'StdCF': {'Length': 16, 'CFM': /AESV2, 'AuthEvent': /DocOpen}}, 'O': '~?\x05\xaa\x169\xf9\x1f\xb0\x15\xce\x10\x81\x07\xd5\xb3\xf3&\xceB\xe3\xa6\x85\xa4l\xfd1\\\xb2\xf4l\xb9', 'Filter': /Standard, 'P': -1324, 'Length': 128, 'R': 4, 'U': '\x8c\x11\xa0\xa9\xd7\xb1C\x8c<\x92\x9fN\x94}\x98\x91\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', 'V': 4, 'StmF': /StdCF, 'StrF': /StdCF}

Erratic Spaces in Words while reading from PDF

Hi,

I have just started using PDFminer. Its solves my purpose of reading PDF along with preserving the fonts information.

But I am facing some issues with th read content. There are some erratic white spaces coming in the words. Attached pics.

screenshot from 2013-11-04 16 56 06

screenshot from 2013-11-04 16 59 51

The Source pdf is : http://www.mckinsey.com/~/media/McKinsey/dotcom/Insights%20and%20pubs/MGI/Research/Technology%20and%20Innovation/Big%20Data/MGI_big_data_full_report.ashx

I have also done 'print to pdf' before running the tool 'pdf2text' on it.

Bounding Box Y coords reflect distance from bottom of document

The y Coordinates are in the bbox elements for the textline and the text elements are relative to the bottom of the document instead of the top.

pdfminer==20110515

?xml version="1.0" encoding="utf-8" ?>
<pages>
<page id="1" bbox="0.000,0.000,612.000,720.000" rotate="0">
<figure name="Im0" bbox="0.000,0.000,612.000,720.000">
<image width="612" height="720" />
</figure>
</page>
<page id="2" bbox="0.000,0.000,612.000,720.000" rotate="0">
<textbox id="0" bbox="65.694,479.087,295.324,490.987">
<textline bbox="65.694,479.087,295.324,490.987">
<text font="UANQRD+FrutigerLTStd-BoldCn" bbox="65.694,479.087,70.324,490.987" size="11.900">F</text>
<text font="UANQRD+FrutigerLTStd-BoldCn" bbox="70.224,479.087,73.004,490.987" size="11.900">i</text>
<text font="UANQRD+FrutigerLTStd-BoldCn" bbox="72.904,479.087,78.464,490.987" size="11.900">r</text>
<text font="UANQRD+FrutigerLTStd-BoldCn" bbox="78.364,479.087,86.514,490.987" size="11.900">m</text>

The "F" character actually starts on 720-479 and not 479.

Document -F boxes_flow

pdf2txt prints that -F boxes_flow is an option but it is not documented on the web page or in the manual.

automatic pip install in Travis-ci

I have a project that uses the automatic test environment from https://travis-ci.org/goulu/Goulib . It fails when installing pdfminer from my requirements.txt file, which contains :
pdfminer==20140328

showing:
...
Downloading/unpacking pdfminer (from -r requirements.txt (line 7))
Could not find a version that satisfies the requirement pdfminer (from -r requirements.txt (line 7)) (from versions: 20091024, 20091129, 20091219, 20100104, 20100131, 20100213, 20100322, 20100327, 20100424, 20100619p1, 20100829, 20101017, 20101226, 20110227, 20110515, 20131113, 20140324, 20140327, 20140328)
Some externally hosted files were ignored (use --allow-external to allow).
Cleaning up...
No distributions matching the version for pdfminer (from -r requirements.txt (line 7))
Storing debug log for failure in /home/travis/.pip/pip.log
The command "pip install -r requirements.txt" failed and exited with 1 during install.
...

any idea of what's wrong ?

by the way, I can't guess how/why pdfminer handles versions like this. Why didn't you simply put a "pdfminer" package on pypi and upload multiple versions there ?

Something broken after recent updates

I got "maximum recursion depth exceeded" error when tried to parse a PDF file like this Stoplift-Anger-Management-Program-Group-Facilitator-2014.pdf With older version of the lib everything works fine.

Here is the ending part of the traceback:

      File "/usr/local/lib/python2.7/dist-packages/pdfminer/pdfdocument.py", line 463, in getobj
        stream = stream_value(self.getobj(strmid))
      File "/usr/local/lib/python2.7/dist-packages/pdfminer/pdfdocument.py", line 463, in getobj
        stream = stream_value(self.getobj(strmid))
      File "/usr/local/lib/python2.7/dist-packages/pdfminer/pdfdocument.py", line 463, in getobj
        stream = stream_value(self.getobj(strmid))
      File "/usr/local/lib/python2.7/dist-packages/pdfminer/pdfdocument.py", line 463, in getobj
        stream = stream_value(self.getobj(strmid))
      File "/usr/local/lib/python2.7/dist-packages/pdfminer/pdfdocument.py", line 463, in getobj
        stream = stream_value(self.getobj(strmid))
      File "/usr/local/lib/python2.7/dist-packages/pdfminer/pdfdocument.py", line 463, in getobj
        stream = stream_value(self.getobj(strmid))
      File "/usr/local/lib/python2.7/dist-packages/pdfminer/pdfdocument.py", line 458, in getobj
        (strmid, index, genno) = xref.get_pos(objid)
      File "/usr/local/lib/python2.7/dist-packages/pdfminer/pdfdocument.py", line 139, in get_pos
        return self.offsets[objid]
    exceptions.RuntimeError: maximum recursion depth exceeded

AttributeError: 'FileUnicodeMap' object has no attribute 'add_code2cid'

I am getting an exception when I try to process_page on the following PDF:
https://www.docketalarm.com/cases/PTAB/IPR2014-00396/Inter_Partes_Review_of_U.S._Pat._7310111/docs/02-20-2014-POR-1773/Power_of_Attorney-5-Power_of_Attorney.pdf

The PDF is digitally signed and I bet that has something to do with it. I don't understand digital signatures or this code well enough to debug it. If you can spot the issue quickly, that would be great.

Stack trace:

 File "..\libs\pdfminer\pdfinterp.py", line 757, in process_page
    self.render_contents(page.resources, page.contents, ctm=ctm)
  File "..\libs\pdfminer\pdfinterp.py", line 770, in render_contents
    self.execute(list_value(streams))
  File "..\libs\pdfminer\pdfinterp.py", line 795, in execute
    func(*args)
  File "..\libs\pdfminer\pdfinterp.py", line 733, in do_Do
    interpreter.render_contents(resources, [xobj], ctm=mult_matrix(matrix, self.ctm))
  File "..\libs\pdfminer\pdfinterp.py", line 768, in render_contents
    self.init_resources(resources)
  File "..\libs\pdfminer\pdfinterp.py", line 339, in init_resources
    self.fontmap[fontid] = self.rsrcmgr.get_font(objid, spec)
  File "..\libs\pdfminer\pdfinterp.py", line 193, in get_font
    font = self.get_font(None, subspec)
  File "..\libs\pdfminer\pdfinterp.py", line 184, in get_font
    font = PDFCIDFont(self, spec)
  File "..\libs\pdfminer\pdffont.py", line 637, in __init__
    CMapParser(self.unicode_map, StringIO(strm.get_data())).run()
  File "..\libs\pdfminer\cmapdb.py", line 292, in run
    self.nextobject()
  File "..\libs\pdfminer\psparser.py", line 584, in nextobject
    self.do_keyword(pos, token)
  File "..\libs\pdfminer\cmapdb.py", line 354, in do_keyword
    self.cmap.add_code2cid(x, cid+i)
AttributeError: 'FileUnicodeMap' object has no attribute 'add_code2cid'

list index out of range error

I get this error both from cmd tool pdf2txt and from code:

caching=caching, check_extractable=True):

File "C:\Python27\lib\site-packages\pdfminer\pdfpage.py", line 123, in get_pag
es
doc = PDFDocument(parser, caching=caching)
File "C:\Python27\lib\site-packages\pdfminer\pdfdocument.py", line 309, in i
nit

xref.load(parser)
File "C:\Python27\lib\site-packages\pdfminer\pdfdocument.py", line 194, in loa
d
objid1 = objs[index*2]
IndexError: list index out of range

Fault-tolerant parsing option for pdf2txt.py

Hi,

I am using PDFMiner for extracting URIs from arXiv.org publications. It works great for > 99% of all PDFs but some fail when I use the pdf2txt.py cmd line tool to extract text from the PDF. I assume this happens because the PDFs are erroneous.

Nevertheless, I was wondering whether it is possible to provide a command line option that allows fault-tolerant parsing; this would really help.

Thanks,
Bernhard

Here are some example PDFs with the stack traces I get when parsing them:

http://arxiv.org/pdf/astro-ph/0001393.pdf
http://arxiv.org/pdf/cond-mat/0001042.pdf
http://arxiv.org/pdf/cond-mat/0001103.pdf
http://arxiv.org/pdf/cond-mat/0001142.pdf
http://arxiv.org/pdf/cond-mat/0001180.pdf
http://arxiv.org/pdf/hep-ph/0001167.pdf

Traceback (most recent call last):
File "/usr/local/bin/pdf2txt.py", line 101, in
if name == 'main': sys.exit(main(sys.argv))
File "/usr/local/bin/pdf2txt.py", line 95, in main
caching=caching, check_extractable=True)
File "/Library/Python/2.6/site-packages/pdfminer/pdfinterp.py", line 832, in process_pdf
interpreter.process_page(page)
File "/Library/Python/2.6/site-packages/pdfminer/pdfinterp.py", line 757, in process_page
self.render_contents(page.resources, page.contents, ctm=ctm)
File "/Library/Python/2.6/site-packages/pdfminer/pdfinterp.py", line 768, in render_contents
self.init_resources(resources)
File "/Library/Python/2.6/site-packages/pdfminer/pdfinterp.py", line 339, in init_resources
self.fontmap[fontid] = self.rsrcmgr.get_font(objid, spec)
File "/Library/Python/2.6/site-packages/pdfminer/pdfinterp.py", line 175, in get_font
font = PDFType1Font(self, spec)
File "/Library/Python/2.6/site-packages/pdfminer/pdffont.py", line 555, in init
PDFSimpleFont.init(self, descriptor, widths, spec)
File "/Library/Python/2.6/site-packages/pdfminer/pdffont.py", line 522, in init
CMapParser(self.unicode_map, StringIO(strm.get_data())).run()
File "/Library/Python/2.6/site-packages/pdfminer/pdftypes.py", line 256, in get_data
self.decode()
File "/Library/Python/2.6/site-packages/pdfminer/pdftypes.py", line 217, in decode
data = lzwdecode(data)
File "/Library/Python/2.6/site-packages/pdfminer/lzw.py", line 97, in lzwdecode
return ''.join(LZWDecoder(fp).run())
File "/Library/Python/2.6/site-packages/pdfminer/lzw.py", line 83, in run
x = self.feed(code)
File "/Library/Python/2.6/site-packages/pdfminer/lzw.py", line 66, in feed
x = self.table[code]
IndexError: list index out of range

http://arxiv.org/pdf/cond-mat/0001035.pdf
http://arxiv.org/pdf/cond-mat/0001140.pdf
http://arxiv.org/pdf/hep-ph/0001051.pdf
http://arxiv.org/pdf/hep-ph/0001098.pdf

Traceback (most recent call last):
File "/usr/local/bin/pdf2txt.py", line 101, in
if name == 'main': sys.exit(main(sys.argv))
File "/usr/local/bin/pdf2txt.py", line 95, in main
caching=caching, check_extractable=True)
File "/Library/Python/2.6/site-packages/pdfminer/pdfinterp.py", line 832, in process_pdf
interpreter.process_page(page)
File "/Library/Python/2.6/site-packages/pdfminer/pdfinterp.py", line 758, in process_page
self.device.end_page(page)
File "/Library/Python/2.6/site-packages/pdfminer/converter.py", line 37, in end_page
self.cur_item.analyze(self.laparams)
File "/Library/Python/2.6/site-packages/pdfminer/layout.py", line 625, in analyze
textboxes = list(self.get_textboxes(laparams, textlines))
File "/Library/Python/2.6/site-packages/pdfminer/layout.py", line 533, in get_textboxes
assert line in neighbors, line
AssertionError: <LTTextLineHorizontal 150.120,288.129,150.333,289.079 u'.'>

http://arxiv.org/pdf/hep-ph/0001083.pdf

Traceback (most recent call last):
File "/usr/local/bin/pdf2txt.py", line 101, in
if name == 'main': sys.exit(main(sys.argv))
File "/usr/local/bin/pdf2txt.py", line 95, in main
caching=caching, check_extractable=True)
File "/Library/Python/2.6/site-packages/pdfminer/pdfinterp.py", line 820, in process_pdf
doc.set_parser(parser)
File "/Library/Python/2.6/site-packages/pdfminer/pdfparser.py", line 333, in set_parser
raise PDFSyntaxError('No /Root object! - Is this really a PDF?')
pdfminer.pdfparser.PDFSyntaxError: No /Root object! - Is this really a PDF?

PDF Streams with endobj Keywords in the Stream Should be Handled Gracefully

The PDF specification makes very clear that within PDF streams, "[o]nly the object values are stored in the stream; the obj and endobj keywords are not used." Nevertheless, in the wild I have come across PDFs where the endjob keyword was used as an object in a stream.

Here is an example:
https://www.docketalarm.com/cases/PTAB/CBM2014-00057/Covered_Business_Method_Patent_Review_of_U.S._Pat._5910988/docs/03-25-2014-PM-17248/Notice-8-Petitioner_2nd_Supplemental_Mandatory_Notice.pdf

pdfminer will not properly parse the above PDF because endjob is mentioned in stream object 49.

No content found on last page

I'm processing a document, and no content is found on page 6 (last page).

If I view it in a pdfviewer, there is content. About 1/2 the page has text-elements, and that elements are gone, they havent popped up on another page or so.

Is this something that has been seen before? Only finds one newline.

$ pdf2txt.py -p 5 test.pdf | wc
298 279 2588
$ pdf2txt.py -p 6 test.pdf | wc
0 0 1
$ pdf2txt.py -p 7 test.pdf | wc
0 0 0

Can send you the pdf if you want it. Dont want to publish it publicly.

NVM. My pdf was corrupt, sorry for being so fast on posting an issue.

/David

Incomplete conversion of paths with multiple disjoint subpaths, with proposed code change

Situation: A PDF that to happens to draw shapes (e.g. groups of separate boxes near each other) using a series of PDF directives such as "mlmlmlml..." without an intervening "stroke" (h) directive, rather that separate groups of paths each separated by their own stroke directive (e.g. mlh, mlh, mlh, etc).

In this case, PDFLayoutAnalyzer.paint_path method fails to emit XML/HTML/Tag/etc tags for each grouping, but instead emits a tag that simply contains all the points (regardless of whether they are connected points or disconnected moves). An improvement to this conversion is contained here. In addition to the special handling for the "ml" () and "mlllh" () cases, a new 9-line insertion adds special handling for disjoint paths, by breaking it apart into each subpath (each delineated by the "m" move directive), and recursively calling itself to generate the appropriate tag for each subpath. I've found this generates much better results when the above situation in a PDF occurs.

Proposed change: At the bottom of the PDFLayoutAnalyzer.paint_path method (in converter.py), just above the comment "# other shapes", insert the following 9 lines:

    if 'm' in shape[1:]:
        # series of disjointed lines (e.g. mlmlml...).  Handle each grouping (delimited by 'move') recursively.
        while 'm' in shape[1:]:
            subpath_len = shape[1:].index('m') + 1
            subpath = path[:subpath_len]
            self.paint_path(gstate, stroke, fill, evenodd, subpath)
            path = path[subpath_len:]
            shape = ''.join(x[0] for x in path)
        return

I use this modified version for quite a while with great success. Hopefully you will find this suggestion useful, and integrate this change into the next revision of pdfminer.

Very small layout elements cause crash

In some cases, elements that have a width or height smaller than 1 cause a crash in LTLayoutContainer.get_textboxes() at the assert line in neighbors, line line. That's because the element is not assigned to any grid in its plane due to a bug in utils.drange() which can return an empty range when it's given floats close to each other.

I've fixed this bug and added a test in my python 3 port at https://bitbucket.org/hsoft/pdfminer3k/changeset/94746ed7e8c5

Documentation: cropbox example

Please, could you include some example showing how to use the cropbox feature?

I haven't found any and the lack of documentation makes it impossible to determine what to do with PDFPage. What format should the cropbox attribute be...

Thanks a lot!

Latest build from PyPI doesn't have process_pdf

from pdfminer.pdfinterp import PDFResourceManager, process_pdf
Traceback (most recent call last):
File "", line 1, in
ImportError: cannot import name process_pdf

This worked in the version prior to the one uploaded on 2013-11-13

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.