2012-02-10 106 views
2

我正在使用虾在Rails 3应用程序中生成PDF。虾:在PDF中打印unicode字符串

是否可以在HTML视图中打印一个Unicode字符串到PDF中?

例如,

<%= raw "unicode_for_&#x0F40;" %> 

show.html.erb导致字形&#x0F40;而

pdf.text raw "unicode_for_&#x0F40;" 

show.pdf.prawn结果字符串"unicode_for_&#x0F40;"

show.pdf.prawn试图在:

pdf.font "#{Prawn::BASEDIR}/data/fonts/TibMachUni-1.901b.ttf" do 
     pdf.text raw "unicode_for_&#x0F40;" 
    end 

pdf.font_families.update("TibMachUni" => {:normal => "#{Prawn::BASEDIR}/data/fonts/TibMachUni-1.901b.ttf" }) 
    pdf.font("TibMachUni") do 
     pdf.text raw "unicode_for_&#x0F40;" 
    end 

这并没有解决问题。

+0

我真的不明白问题是什么? – phoet 2012-02-10 21:02:49

+0

我的问题是相应的字符串到Unicode字符串(例如\ x0F40)没有显示在我的pdf。它会简单地转换为utf-8并显示为常规字符串(例如“\ x0F40”)。 – obj 2012-02-10 21:13:56

回答

5

,您应该使用的

pdf.text raw "unicode_for_\u0F40" 

代替

pdf.text raw "unicode_for_&#x0F40;" 

Ruby的方式来逃避Unicode字符是\uXXXX

&#x0F40;转义是一种HTML/XML转义代码,仅适用于第一个视图生成HTML文件。

+0

非常感谢你! – obj 2012-02-13 16:47:23

+0

说谢谢的方法是upvote并接受答案;) – gioele 2012-02-13 16:50:07