我正在尝试在Prawn文档中包含一个私有使用区域unicode,但无法使其工作。
我查看了这个帖子Prawn:Print unicode string in PDF,但无法完成原始工作。我收到这个错误:
pdf.rb:90:in `block in <main>': undefined method `raw' for #<Prawn::Document:0x007fa579adfef0> (NoMethodError)
没有原始的,它不会渲染雕文。
font("#{Prawn::DATADIR}/fonts/icons-webfont.ttf") do
text raw "unicode_for_\e501"
end
由于
答案 0 :(得分:1)
'raw'方法不是Prawn方法;它是来自Rails的OutputSafetyHelper method。我得到了与你相同的错误(我在模型中运行Prawn代码,而不是视图)但在查看#raw的源代码后,我意识到它所做的只是调用String#html_safe。我替换了你的原文:
text raw "unicode_for_\e501"
与
text "unicode_for_\uE501".html_safe
请注意以下事项:
双引号和\ u擒纵是很重要的,但我发现(为了我的目的)我不需要.html_safe调用,因为我能够在没有它的情况下打印Unicode字符。
这是我的文本调用,它会加载一个字形图标:
pdf.font("vabicons") do
pdf.text "\uE61d"
end
作为参考,我从IcoMoon.io加载自定义字体,所有可打印字符必须由Unicode引用。请记住,您需要正确声明您的字体,否则即使格式正确的文本也可能无法显示。
这是我的字体声明:
sym = Pathname.new( Rails.root.join('app', 'assets', 'stylesheets', 'fonts', 'vabicons.ttf').to_s )
pdf.font_families["vabicons"] = {
:normal => { :file => sym, :font => "Regular" }
}