ruby-on-rails - Prawn :目录如何做成 “Leader dots”?

标签 ruby-on-rails prawn

我正在使用 Prawn gem 在我的 Rails 应用程序中生成 PDF 文档。我已经成功创建了 PDF 但我有一个目录,我想知道是否有可能或者是否有一种方法可以在 Prawn 中创建前导点效果 enter image description here

最佳答案

是的,有一种方法可以在 Praw 中创建领导点效果。

如果你有:

  1. 总可用宽度
  2. 目录条目的宽度
  3. 页码宽度
  4. 单个前导点的宽度

space_for_dots = 1. - 2. - 3.

dots = (space_for_dots/4) * '.'

toc_entry = entry_string + 点 + entry_page_number


Prawn 计算字符串的宽度可以用compute_width_of ,它是字体类的一部分。

您添加的图片示例如下所示:

def build_toc_entry(left_text, right_text, available_width, text_size)
  left_text_width = font(YOUR_FONT).compute_width_of(left_text, size: text_size)
  right_text_width = font(YOUR_FONT).compute_width_of(right_text, size: text_size)
  dot_width = font(YOUR_FONT).compute_width_of('.', size: text_size)
  space_width = font(YOUR_FONT).compute_width_of(' ', size: text_size)

  space_for_dots = available_width - left_text_width - right_text_width - space_width * 2
  dots = '.' * (space_for_dots / dot_width)

  "#{left_text} #{dots} #{right_text}" # return the finished toc entry
end

text 'Locate the information on the page indicated.'
text build_toc_entry('Leader Dots', '3', 350, 8)
text build_toc_entry('Dingbats', '5', 350, 8)
text build_toc_entry('Bullets', '8', 350, 8)

关于ruby-on-rails - Prawn :目录如何做成 “Leader dots”?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38855558/

相关文章:

ruby-on-rails - 如何捕获 "undefined method ` [ ]' for nil:NilClass"错误?

ruby - Prawn 在使用 repeat( :all)

mysql - Rails ActiveRecord 加入并包含在同一个查询中?

ruby-on-rails - 获取错误 Apple 推送通知 OpenSSL::SSL::SSLError

ruby - Prawn pdf和分页

ruby-on-rails - Prawn中的Repeater PDF渲染内容两次

ruby-on-rails - Prawn - 在text_box展开后向下移动光标

ruby - 将 HTML 表单转换为 PDF

ruby-on-rails - Rails 乘客/tmp/文件夹权限被拒绝

ruby-on-rails - 如何以及在哪里处理关联记录的更新过程?