Prawn gem是否支持阿拉伯语?

时间:2014-07-09 11:01:27

标签: ruby-on-rails ruby prawn

我将用阿拉伯语创建一个pdf报告,但这些字母是以相反的顺序分开的,我使用以下代码生成一个pdf文件

class InstitutesPdf < Prawn::Document
  def initialize(institute)
    super()
    font(Rails.root.join("app/assets/fonts/arial.ttf"))
    @institute = institute
    text "Institute ID : #{@institute.id}"
    move_down(30)
    text "Institute name : #{@institute.name.mb_chars.to_s}"
  end
end

当我将最后一行更改为

text "Institute name : #{@institute.name.mb_chars.reverse.to_s}"

单词字母按正确顺序显示但仍然分开

我使用rails 4和prawn版本'1.1.0'

2 个答案:

答案 0 :(得分:1)

我开发了一个宝石来解决这个问题,特别是用于被Sinan重构为这个项目的虾:

https://github.com/staii/arabic-letter-connector

所以在控制台中:

gem install arabic-letter-connector

然后在代码中:

require 'prawn'
require 'arabic-letter-connector'
Prawn::Document.generate("arabic.pdf") do
  text_direction :rtl
  font("/path/to/arabic/font.ttf") do # For example: http://www.amirifont.org/
    text "مرحبا يا العالم".connect_arabic_letters
  end
end

由于您有混合文本而可能不想使用:rtl,解决方法是在打印到pdf之前自行反转字符串。

答案 1 :(得分:0)

我有同样的问题,我试图通过RMagick打印阿拉伯语单词

我是通过使用connect_arabic_letters连接它们来完成的,然后使用.reverse来反转字符(你可能不必这样做)

仅供参考:如果单词被装饰(塔什凯尔/哈拉卡特),这种方法效果不佳