【发布时间】:2013-12-09 13:02:23
【问题描述】:
是否可以根据布尔值的结果让 Prawn 填写复选框?例如,我想为一系列问题设置一个“是”和一个“否”复选框以记录响应。收到信息后,我想填写相应的复选框。这可能吗?如果可以,如何?
谢谢!
【问题讨论】:
标签: ruby-on-rails ruby gem prawn
是否可以根据布尔值的结果让 Prawn 填写复选框?例如,我想为一系列问题设置一个“是”和一个“否”复选框以记录响应。收到信息后,我想填写相应的复选框。这可能吗?如果可以,如何?
谢谢!
【问题讨论】:
标签: ruby-on-rails ruby gem prawn
Prawn 2.2.2(可能更早)带有内置的 ZapfDingbats 字体。这意味着如果您生成文本并使用 ZapfDingbats 字体,那么您只需要传递一个文本值“3”(这是 ASCII 51,恰好是 ZapfDingbats 的复选标记)。
例如,在我的应用中,我制作了一些表格单元格内容,如下所示:
@pdf.make_cell(content: "3", font: "ZapfDingbats", width: 10)
这会产生一个复选标记。
小写“o”将产生一个未选中的框。
希望对您有所帮助。
【讨论】:
自己画这个并不难。这对我来说是一个非常灵活的解决方案。
def checkbox(flag, x_position = 7, y_position = @pdf.cursor - 2)
@pdf.bounding_box([x_position, y_position], width: 10, height: 12) do
@pdf.stroke_bounds
@pdf.text("X", align: :center, valign: :center) if flag
end
end
【讨论】:
pdf 变量来自哪里?
有一个要点here 讨论了这个问题。 基本的想法是你需要使用支持复选框的字体集才能让它工作。
如果你想要更高级的东西,prawn 不支持开箱即用的复选框,所以你需要为此创建一些东西。
【讨论】: