Ссылки на другие страницы с помощью ReportLab - PullRequest
3 голосов
/ 28 июля 2010

Я использую ReportLab для создания длинных анкет, и мне нужно создать текст, подобный

Если у вас нет аллергии, перейдите на страницу 168

Предоставляет ли ReportLab какую-либо функцию, которая может помочь мне в этой задаче ссылки?

Я понимаю, что эта проблема, вероятно, нуждается в двухпроходном алгоритме . В первом проходе номера страниц найдены. Второй проход завершает текст, корректируя ссылки на соответствующие страницы. Есть ли что-то в ReportLab API, которое может помочь в этом контексте?

Ответы [ 2 ]

1 голос
/ 12 октября 2012

Прошло два года с момента первоначального вопроса, но я рискну ответить ради других, которые могут получить этот вопрос от поисковой системы:

Reportlab поддерживает внутренние ссылки.В соответствующем разделе руководства пользователя лаборатории отчетов [только в формате PDF, доступно здесь ] читается ...

PDF поддерживает внутренние гиперссылки.Существует очень широкий спектр типов ссылок, типов назначения и событий, которые могут быть вызваны одним щелчком мыши.На данный момент мы просто поддерживаем базовую возможность перехода с одной части документа на другую и контроля уровня масштабирования окна после перехода.Метод bookmarkPage определяет пункт назначения, который является конечной точкой перехода ... [раздел 4.2]

0 голосов
/ 06 декабря 2018

вот как я это сделал:

1, необходимо зарегистрировать адресата следующим образом (имя является ключом):

   st = ParagraphStyle('a style', alignment=TA_CENTER)
   from hashlib import sha1
   destination = sha1("Vintage".encode('utf-8')).hexdigest()
   b = Paragraph("My Page"+'<a name="%s"/>' % destination, st)
   b._bookmarkName = destination

   =====

2, позже сделайте это для ссылкив абзаце, который вы собираетесь сделать, нажмите (ключевой момент здесь - резкий знак # спереди):

 contents = Paragraph(text="This <a href=#{} color=blue> Vintage </a>".format(destination), style=st)

в этом абзаце вы нажимаете Винтаж, затем переходите на страницу назначения по вашему желанию

...