1
1
mirror of https://github.com/Kozea/WeasyPrint.git synced 2024-10-04 16:07:57 +03:00

Merge pull request #1358 from aschmitz/1352-multipage

Sort anchors across pages
This commit is contained in:
Guillaume Ayoub 2021-05-30 18:53:16 +02:00 committed by GitHub
commit ba41e7610a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -469,12 +469,10 @@ def add_hyperlinks(links, anchors, matrix, pdf, page, names):
page['Annots'] = pydyf.Array()
page['Annots'].append(annot.reference)
# Anchors are name trees that have to be sorted
for anchor in sorted(anchors):
for anchor in anchors:
anchor_name, x, y = anchor
x, y = matrix.transform_point(x, y)
names.append(pydyf.String(anchor_name))
names.append(pydyf.Array([page.reference, '/XYZ', x, y, 0]))
names.append([anchor_name, pydyf.Array([page.reference, '/XYZ', x, y, 0])])
def rectangle_aabb(matrix, pos_x, pos_y, width, height):
@ -990,7 +988,7 @@ class Document:
'Shading': shadings,
})
pdf.add_object(resources)
pdf_names = pydyf.Array()
pdf_names = []
# Links and anchors
page_links_and_anchors = list(resolve_links(self.pages))
@ -1320,8 +1318,13 @@ class Document:
# Anchors
if pdf_names:
# Anchors are name trees that have to be sorted
name_array = pydyf.Array()
for anchor in sorted(pdf_names):
name_array.append(pydyf.String(anchor[0]))
name_array.append(anchor[1])
pdf.catalog['Names'] = pydyf.Dictionary(
{'Dests': pydyf.Dictionary({'Names': pdf_names})})
{'Dests': pydyf.Dictionary({'Names': name_array})})
if finisher:
finisher(self, pdf)