【问题标题】:Prawn: Print unicode string in PDF大虾:在 PDF 中打印 unicode 字符串
【发布时间】:2012-02-10 16:37:55
【问题描述】:

我正在使用 Prawn 在 Rails 3 应用程序中生成 PDF。

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

例如,

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

show.html.erb 中会产生字形 ཀ 而

pdf.text raw "unicode_for_&#x0F40;"

show.pdf.prawn 中产生字符串"unicode_for_&amp;#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

这并没有解决问题。

【问题讨论】:

  • 我真的不明白问题是什么?
  • 我的问题是 unicode 字符串的对应字形(例如 \x0F40)没有出现在我的 pdf 中。它被简单地转换为 utf-8 并显示为常规字符串(例如“\x0F40”)。

标签: ruby unicode character-encoding prawn


【解决方案1】:

你应该使用

pdf.text raw "unicode_for_\u0F40"

而不是

pdf.text raw "unicode_for_&#x0F40;"

转义 unicode 字符的 Ruby 方法是 \uXXXX

&amp;#x0F40; 转义码是 HTML/XML 转义码,仅在第一个视图生成 HTML 文件时才起作用。

【讨论】:

  • 表示感谢的方式是点赞并接受答案;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-11-23
  • 1970-01-01
  • 2014-08-23
  • 2015-11-16
  • 1970-01-01
  • 2012-06-11
相关资源
最近更新 更多