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
Attila Szász 2017-07-20 19:46:11 +01:00 committed by Goulu
parent d79612c455
commit 938419c476
2 changed files with 6 additions and 4 deletions

View File

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
__version__ = '20170510' __version__ = '20170630'
if __name__ == '__main__': if __name__ == '__main__':
print (__version__) print (__version__)

View File

@ -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')