Использование link_annotation с опцией: Des c в Prawn PDF - PullRequest
0 голосов
/ 09 апреля 2020

Я изо всех сил пытался связать текстовый заголовок с определенной c страницей в PDF, аналогично связыванию Table of Contents в PDF-файле. Я нашел link_annotation метод для достижения этой цели, однако нет достаточной документации / примеров, доступных для использования link_annotation метод с :Desc.

Любые идеи, как использовать link_annotation с :Desc option?

Документация по аннотациям ссылок: https://www.rubydoc.info/gems/prawn-core/Prawn%2FDocument%2FAnnotations: ссылка_аннотаций

1 Ответ

0 голосов
/ 11 апреля 2020

Для связывания текста с указанной страницей c с указанным смещением c класс Destinations предоставляет множество вспомогательных методов. Используя dest_xyz , текст может быть связан с указанной c страницей с указанным c смещением.

Вот рабочий пример, который связывает текст с 1-й страницы с текстом на 2-й странице с указанием c смещения.

require 'Prawn'

margin = 36.0
extra_clickable_margin = 4.0
top_offset = 500.0
@pdf = Prawn::Document.new(margin: margin, page_size: 'A4')

clickable_text = "Clickable Annotation to 2nd page at offset #{top_offset}"
text_width  = @pdf.width_of(clickable_text)
text_height = @pdf.height_of(clickable_text)
cursor      = @pdf.cursor
@pdf.text clickable_text

left   = margin
top    = cursor + margin + extra_clickable_margin
bottom = top - text_height - extra_clickable_margin
right  = left + text_width
src_rect = [left, bottom, right, top]

@pdf = Prawn::Document.new(margin: margin, page_size: 'A4')
@pdf.start_new_page
@pdf.text 'Some Text for 2nd page. ' * 40
dest = @pdf.dest_xyz(0, top_offset, nil, @pdf.state.pages[1])
@pdf.link_annotation(src_rect, Dest: dest)
...