заголовок и нижний колонтитул у Креветки PDF

Я прочитал все соответствующие сообщения на Креветке, но не нашел упоминания (даже в собственной документации Креветки) заголовков и нижних колонтитулов.

Однако я действительно видел демонстрацию на собственном сайте 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

И заголовком, на всякий случай, я имею в виду отрывки слов, которые обычно появляются в углу каждой страницы документа. Как Ваш номер аккаунта на Ваших страницах счетов.

спасибо!

29
задан Abe Voelker 31 August 2011 в 15:00
поделиться

2 ответа

@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
21
ответ дан 28 November 2019 в 00:49
поделиться

Единственный способ получить повторяющийся элемент на странице - это использовать метод 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

Это дает вам вывод текста с подсчетом страниц на каждой новой странице. Было бы идеально, если бы это можно было применить при настройке шаблона страницы, который используется повторно без ручного вызова для визуализации элемента. В сочетании с потоком текста это даст традиционное решение верхних и нижних колонтитулов.

1
ответ дан 28 November 2019 в 00:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: