Add support for removing inner bookmarks
This commit is contained in:
parent
47b1830b57
commit
abd72521b1
|
@ -22,7 +22,10 @@ class Stitcher:
|
||||||
os.chdir(self.dir)
|
os.chdir(self.dir)
|
||||||
|
|
||||||
text = inputBuffer.read()
|
text = inputBuffer.read()
|
||||||
html = markdown.markdown(text,extensions=['attr_list'])
|
md = markdown.Markdown(extensions=['attr_list', 'meta'])
|
||||||
|
html = md.convert(text)
|
||||||
|
self.attributes = md.Meta
|
||||||
|
|
||||||
document = html5lib.parseFragment(html, namespaceHTMLElements=False)
|
document = html5lib.parseFragment(html, namespaceHTMLElements=False)
|
||||||
for e in document.iter():
|
for e in document.iter():
|
||||||
self.iter(e)
|
self.iter(e)
|
||||||
|
@ -50,8 +53,8 @@ class Stitcher:
|
||||||
elif(tag =='a'):
|
elif(tag =='a'):
|
||||||
file = element.attrib.get('href')
|
file = element.attrib.get('href')
|
||||||
b = Bookmark(self.currentPage, element.text, self.currentLevel+1)
|
b = Bookmark(self.currentPage, element.text, self.currentLevel+1)
|
||||||
self.currentPage += self._get_pdf_number_of_pages(file)
|
|
||||||
self.files.append((file, self.currentPage))
|
self.files.append((file, self.currentPage))
|
||||||
|
self.currentPage += self._get_pdf_number_of_pages(file)
|
||||||
if b:
|
if b:
|
||||||
self.bookmarks.append(b)
|
self.bookmarks.append(b)
|
||||||
|
|
||||||
|
@ -62,21 +65,35 @@ class Stitcher:
|
||||||
targetFileHandle.write("BookmarkPageNumber: " + str(page) + "\n")
|
targetFileHandle.write("BookmarkPageNumber: " + str(page) + "\n")
|
||||||
targetFileHandle.write("BookmarkZoom: FitHeight\n")
|
targetFileHandle.write("BookmarkZoom: FitHeight\n")
|
||||||
|
|
||||||
def _generate_metadata(self, filename, flatten_inner_bookmarks=True):
|
def _existingBookmarkConfig(self):
|
||||||
|
return self.attributes.get('existing_bookmarks', ['keep'])
|
||||||
|
|
||||||
|
def _keepExistingBookmarks(self):
|
||||||
|
return self._existingBookmarkConfig()[0] != 'remove'
|
||||||
|
|
||||||
|
def _flattenBookmarks(self):
|
||||||
|
if (self._existingBookmarkConfig() == ['flatten']):
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
def _generate_metadata(self, filename):
|
||||||
|
if (self._flattenBookmarks()):
|
||||||
|
_logger.info("Bookmarks are flattened")
|
||||||
with open(filename, 'w') as target:
|
with open(filename, 'w') as target:
|
||||||
if (self.title):
|
if (self.title):
|
||||||
target.write("InfoBegin\n")
|
target.write("InfoBegin\n")
|
||||||
target.write("InfoKey: Title\n")
|
target.write("InfoKey: Title\n")
|
||||||
target.write("InfoValue: " + self.title + "\n")
|
target.write("InfoValue: " + self.title + "\n")
|
||||||
|
|
||||||
for b in self.oldBookmarks:
|
if (self._keepExistingBookmarks()):
|
||||||
outer_level = self._get_level_from_page_number(b.page)
|
for b in self.oldBookmarks:
|
||||||
if (flatten_inner_bookmarks):
|
outer_level = self._get_level_from_page_number(b.page)
|
||||||
increment = 1
|
if (self._flattenBookmarks()):
|
||||||
else:
|
increment = 1
|
||||||
increment = b.level
|
else:
|
||||||
level = outer_level + increment
|
increment = b.level
|
||||||
self.bookmarks.append(Bookmark(b.page+1, b.title, level))
|
level = outer_level + increment
|
||||||
|
self.bookmarks.append(Bookmark(b.page+1, b.title, level))
|
||||||
|
|
||||||
self.bookmarks.sort()
|
self.bookmarks.sort()
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue