PDF Output: Handle empty anchors present at the end of a page

This commit is contained in:
Kovid Goyal 2013-01-08 14:53:08 +05:30
parent d4819097f4
commit a592ab85f9
3 changed files with 13 additions and 8 deletions

View File

@ -345,8 +345,8 @@ class PdfDevice(QPaintDevice): # {{{
return int(round(self.body_height * self.ydpi / 72.0)) return int(round(self.body_height * self.ydpi / 72.0))
return 0 return 0
def end_page(self): def end_page(self, *args, **kwargs):
self.engine.end_page() self.engine.end_page(*args, **kwargs)
def init_page(self): def init_page(self):
self.engine.init_page() self.engine.init_page()

View File

@ -279,6 +279,7 @@ class PDFWriter(QObject):
if self.doc.errors_occurred: if self.doc.errors_occurred:
break break
if not self.doc.errors_occurred:
self.doc.add_links(self.current_item, start_page, amap['links'], self.doc.add_links(self.current_item, start_page, amap['links'],
amap['anchors']) amap['anchors'])

View File

@ -17,10 +17,14 @@ from calibre.ebooks.pdf.render.common import Array, Name, Dictionary, String
class Destination(Array): class Destination(Array):
def __init__(self, start_page, pos, get_pageref): def __init__(self, start_page, pos, get_pageref):
super(Destination, self).__init__( pnum = start_page + pos['column']
[get_pageref(start_page + pos['column']), Name('XYZ'), pos['left'], try:
pos['top'], None] pref = get_pageref(pnum)
) except IndexError:
pref = get_pageref(pnum-1)
super(Destination, self).__init__([
pref, Name('XYZ'), pos['left'], pos['top'], None
])
class Links(object): class Links(object):