Align dumppdf tool to modified data structures. (#73)
* Align dumppdf tool to modified data structures. TOC page numbers should also work now, counting from 1. * Update version number.pull/80/head
parent
d79612c455
commit
938419c476
|
@ -1,6 +1,6 @@
|
||||||
|
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
__version__ = '20170510'
|
__version__ = '20170630'
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
print (__version__)
|
print (__version__)
|
||||||
|
|
|
@ -122,7 +122,7 @@ def dumpoutline(outfp, fname, objids, pagenos, password='',
|
||||||
parser = PDFParser(fp)
|
parser = PDFParser(fp)
|
||||||
doc = PDFDocument(parser, password)
|
doc = PDFDocument(parser, password)
|
||||||
pages = dict( (page.pageid, pageno) for (pageno,page)
|
pages = dict( (page.pageid, pageno) for (pageno,page)
|
||||||
in enumerate(PDFPage.create_pages(doc)) )
|
in enumerate(PDFPage.create_pages(doc), 1) )
|
||||||
def resolve_dest(dest):
|
def resolve_dest(dest):
|
||||||
if isinstance(dest, str):
|
if isinstance(dest, str):
|
||||||
dest = resolve1(doc.get_dest(dest))
|
dest = resolve1(doc.get_dest(dest))
|
||||||
|
@ -130,6 +130,8 @@ def dumpoutline(outfp, fname, objids, pagenos, password='',
|
||||||
dest = resolve1(doc.get_dest(dest.name))
|
dest = resolve1(doc.get_dest(dest.name))
|
||||||
if isinstance(dest, dict):
|
if isinstance(dest, dict):
|
||||||
dest = dest['D']
|
dest = dest['D']
|
||||||
|
if isinstance(dest, PDFObjRef):
|
||||||
|
dest = dest.resolve()
|
||||||
return dest
|
return dest
|
||||||
try:
|
try:
|
||||||
outlines = doc.get_outlines()
|
outlines = doc.get_outlines()
|
||||||
|
@ -140,10 +142,10 @@ def dumpoutline(outfp, fname, objids, pagenos, password='',
|
||||||
dest = resolve_dest(dest)
|
dest = resolve_dest(dest)
|
||||||
pageno = pages[dest[0].objid]
|
pageno = pages[dest[0].objid]
|
||||||
elif a:
|
elif a:
|
||||||
action = a.resolve()
|
action = a
|
||||||
if isinstance(action, dict):
|
if isinstance(action, dict):
|
||||||
subtype = action.get('S')
|
subtype = action.get('S')
|
||||||
if subtype and repr(subtype) == '/GoTo' and action.get('D'):
|
if subtype and repr(subtype) == '/\'GoTo\'' and action.get('D'):
|
||||||
dest = resolve_dest(action['D'])
|
dest = resolve_dest(action['D'])
|
||||||
pageno = pages[dest[0].objid]
|
pageno = pages[dest[0].objid]
|
||||||
s = e(title).encode('utf-8', 'xmlcharrefreplace')
|
s = e(title).encode('utf-8', 'xmlcharrefreplace')
|
||||||
|
|
Loading…
Reference in New Issue