Я прочитал все соответствующие сообщения на Креветке, но не нашел упоминания (даже в собственной документации Креветки) заголовков и нижних колонтитулов.
Однако я действительно видел демонстрацию на собственном сайте Prawnto о заголовках и нижних колонтитулах. Я скопировал весь источник той демонстрации только, чтобы видеть, работает ли это, но об ошибке неопределенного метода "заголовок" жалуются. Я должен понять, что Креветка недавно вынула заголовок и нижний колонтитул в драгоценном камне или является там чем-то еще, что я должен сделать сначала для использования заголовка и нижнего колонтитула?
Демонстрационная страница: http://cracklabs.com/prawnto/code/prawn_demos/source/text/flowing_text_with_header_and_footer
часть кода беспокойства:
Prawn::Document.generate("flow_with_headers_and_footers.pdf") do
header margin_box.top_left do
text "Here's My Fancy Header", :size => 25, :align => :center
end
text "hello world!"
end
И заголовком, на всякий случай, я имею в виду отрывки слов, которые обычно появляются в углу каждой страницы документа. Как Ваш номер аккаунта на Ваших страницах счетов.
спасибо!
@GrantSayer спасибо за пример, но это позволит вам показать только текущий номер страницы, а не общее количество страниц.
Вы также можете использовать функцию number_pages для нижнего колонтитула:
Prawn::Document.generate("page_with_numbering.pdf") do
text "Hai"
start_new_page
text "bai"
start_new_page
text "-- Hai again"
number_pages "<page> in a total of <total>", [bounds.right - 50, 0]
end
Однако в моем случае мне также нужно отформатировать / стилизовать и выровнять номера страниц по правому краю, чтобы они соответствовали руководствам по стилю компании. Я использовал go_to_page (k) для создания моих собственных функций верхнего и нижнего колонтитула, которые добавляют верхний и нижний колонтитулы на каждую страницу после создания всех страниц. Это дает мне как варианты стилей, так и общее количество страниц:
Prawn::Document.generate("footer_example.pdf", :skip_page_creation => true) do
10.times do
start_new_page
text "Some filler text for the page"
end
# footer
page_count.times do |i|
go_to_page(i+1)
lazy_bounding_box([bounds.right-50, bounds.bottom + 25], :width => 50) {
text "#{i+1} / #{page_count}"
}.draw
end
end
Единственный способ получить повторяющийся элемент на странице - это использовать метод Prawn :: Document :: LazyBoundingBox
. По сути, это позволяет вам определять ограничивающую рамку, которая отображается только после того, как вы ее вызываете. Итак, обычные шаги псевдокода
:
1. Define lazy bounding box element assign to somevar
2. One each new page call the element.
Пример из источника показывает, как
file = "lazy_bounding_boxes.pdf"
Prawn::Document.generate(file, :skip_page_creation => true) do
point = [bounds.right-50, bounds.bottom + 25]
page_counter = lazy_bounding_box(point, :width => 50) do
text "Page: #{page_count}"
end
10.times do
start_new_page
text "Some filler text for the page"
page_counter.draw
end
end
Это дает вам вывод текста с подсчетом страниц на каждой новой странице. Было бы идеально, если бы это можно было применить при настройке шаблона страницы, который используется повторно без ручного вызова для визуализации элемента. В сочетании с потоком текста это даст традиционное решение верхних и нижних колонтитулов.