2012-02-10 90 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