2011-05-26 33 views
4

我試圖使用reportlab生成報告,並且報告語言是阿拉伯語。但問題是reportlab不支持BIDI(雙向)顯示,因爲在Python中缺少BIDI Algorithm支持。很多谷歌搜索後,我發現Gnome Fribidi周圍有一個叫做PyFribidi的包裝。但它只在Linux上編譯和運行,我試圖在windows上使用mingwin構建它,但編譯失敗,因爲沒有找到大量的linux庫。pyfribidi for windows或任何其他比迪算法

我的問題是,是否有任何Unicode在Python中的雙向算法實現,在Windows上運行?

謝謝。

回答

1

Python BiDi是一個偉大的單纖雙向算法的實現,但它只是支持雙向(這是)沒有固定contextual form爲了解決上下文形式問題,您應該使用名爲python-arabic-reshaper的阿拉伯文reshaper庫來使用python-bidi模塊。

例如:(距離=>http://mpcabd.igeex.biz/python-arabic-text-reshaper/

import arabic_reshaper 
from bidi.algorithm import get_display 

#... 
reshaped_text = arabic_reshaper.reshape(u'اللغة العربية رائعة') 
bidi_text = get_display(reshaped_text) 
pass_arabic_text_to_render(bidi_text) 
#... 

它完美地修復我的問題,並且這兩個軟件包是純Python實現。

+0

我在哪裏可以找到Java版本的get_display? – simo 2014-06-11 16:36:37

2

python-bidi http://pypi.python.org/pypi/python-bidi/是一個純粹的python API,所以推測它應該可以在Windows上正常工作。

您需要使用reportlab的RL分支並通過調用python-bidi更改對pyfribidi的任何調用。此鏈接可以幫助http://code.pediapress.com/wiki/wiki/RightToLeft

+0

蟒蛇,比迪是一個很好的解決方案,我嘗試過它,它是完美的希伯來語,但阿拉伯文字,具體的字符形狀特殊照顧贊同其在該詞中的位置。對於最佳解決方案,我發現它超過一年後,請看我的答案=> http://en.wikipedia.org/wiki/Arabic_script_in_Unicode#Contextual_forms – MBarsi 2012-09-28 21:19:00