我试图使用
ruby在OS X上使用Prawn生成一个PDF文件.我有以下几个:
font 'Arial'
Arial安装在我的Mac上但是当我尝试生成PDF时,我会收到以下错误:
Prawn::Errors::UnknownFont in ProjectsController#show Arial is not a known font.
如何使这个通用字体在Prawn中工作?事实上,除了Helvetica或Times New Roman之外的几乎任何事情都会引起同样的错误.这是Rails 3.2应用程序的一部分.
如果我尝试直接加载字体ttf文件,根据Ashish的建议,我得到一个坏字体系列消息:
RuntimeError (Bad font family): app/pdfs/quote_sheet_pdf.rb:29:in `page_top' app/pdfs/quote_sheet_pdf.rb:12:in `initialize' app/controllers/projects_controller.rb:9:in `new' app/controllers/projects_controller.rb:9:in `block (2 levels) in show' app/controllers/projects_controller.rb:7:in `show' config/initializers/quiet_assets.rb:7:in `call_with_quiet_assets'
解决方法
如果您使用:样式选项调用文本,例如
text "Hello World",:style => :italic
那么当时使用的字体需要有一个关联的字体系列,否则你会看到你所看到的“坏字体系列”错误.这个:
Prawn::Document.generate("output.pdf") do font "/Library/Fonts/Arial.ttf" text "Hello World",:style => :italic end
产生:不良字体系列(RuntimeError).
font "/Library/Fonts/Arial Italic.ttf" text "Hello World"
一个更好的选择是创建一个具有所需样式的字体系列:
Prawn::Document.generate("output.pdf") do font_families.update("Arial" => { :normal => "/Library/Fonts/Arial.ttf",:italic => "/Library/Fonts/Arial Italic.ttf",:bold => "/Library/Fonts/Arial Bold.ttf",:bold_italic => "/Library/Fonts/Arial Bold Italic.ttf" }) font "Arial" text "Hello World" text "Hello World",:style => :italic text "Hello World",:style => :bold text "Hello World",:style => :bold_italic end
设置字体后,您可以使用Arial作为字体名称,您可以轻松使用不同的样式.