题
我有一堆 UTF-8 格式的阿拉伯文本。我尝试显示此设备的设备不支持显示阿拉伯语文本。因此,我需要将文本转换为图像。
我想将每行文本保存为具有特定宽度的图像。我还需要使用特定的字体。做这个的最好方式是什么?有人知道这里有一个有用的工具吗?
到目前为止我遇到的问题:
PHP+GD:阿拉伯字母是分开出现的,而不是像应有的那样以草书形式出现。VB.net:我可以将每行文本转储到 Richtextbox 中...但我不知道如何导出该控件的图像。闪光:不支持从右到左的文本。
解决方案
至于 阿拉伯, ,你需要一个库来 反转字符/字形 为了 PHP/GD. 。参见例如 http://sourceforge.net/projects/ar-php/ 或 http://www.ar-php.org/.
确保 你的 PHP文件 编码是在 统一码/UTF.
例如> 打开记事本 > 另存为 > 编码为 UTF-8:
PHP 中阿拉伯语排版的示例用法 图像ttf文本:
<?php
// The text to draw
require('./I18N/Arabic.php');
$Arabic = new I18N_Arabic('Glyphs');
$font = './DroidNaskh-Bold.ttf';
$text = $Arabic->utf8Glyphs('لغةٌ عربيّة');
// Create the image
$im = imagecreatetruecolor(600, 300);
// Create some colors
$white = imagecolorallocate($im, 255, 255, 255);
$grey = imagecolorallocate($im, 128, 128, 128);
$black = imagecolorallocate($im, 0, 0, 0);
imagefilledrectangle($im, 0, 0, 599, 299, $white);
// Add the text
imagettftext($im, 50, 0, 90, 90, $black, $font, $text);
// Using imagepng() results in clearer text compared with imagejpeg()
imagepng($im, "./output_arabic_image.png");
echo 'open: ./output_arabic_image.png';
imagedestroy($im);
?>
输出:
其他提示
我已经听说了 攀高 处理阿拉伯语的布局非常好。没有使用过它。
更新:
实用 pango-view
可以使案文 任何 语言和输出它作为一个图像
$ pango-view input_file.txt --no-display --output=image.png
或者你可以提供该文本作为一个选项,以及:
$ pango-view --no-display --output=image.png --text="your sentence"
你也可以指定一个宽度:
--width=50 -wrap=word
<< 端的更新
另外,还有一些程序,使用unicode字,代表阿拉伯语的上下文的信函的形式和处理文本,并使其正确呈现在的系统不能呈现阿拉伯语文本正确。
这里是那个我知道:
他们是所有的开放源,所以即使你没有使用任何这些语言,你可以研究码和创建一个解决方案在编程语言的选择。
有许多方式;使用的窗口。形式,例如,我想你:
- 创建一个空图像的实例;我认为,在这一点上,你定义的图像的尺寸
- 创建一个图形的实例从图像,使用的图形。FromImage方法
- 调用的方法的控制(是)它告诉它画本身:和给这一方法,通过图形相关的实例有你的图像,以便它描绘自身上的图像。
我不知道,如果你还在等待一个答案,但有你的问题非常干净整洁的解决方案。您可以根据自己的CSS类更改任何文本,包括RTL,图像。不过,让我先告诉你,PHP和GD什么都,没有为RTL文本没有任何好处。你应该尝试基于宽度asp.net文本替换。
在我走相同的路径和挣扎天。这里是你应该做的。
首先去以下地址看看教程和下载文件。 http://weblogs.asp.net /yaneshtyagi/archive/2008/11/07/text-to-image-convertor.aspx
其次,你需要一个asp.net服务器。你可以安装它,或者你可以使用这些虚拟服务器之一,如单asp.net服务器,或者您可以使用Visual Web Developer中。
你将得到的代码转换的文本到单个行中的图像,虽然可以指定宽度。在文本的这种情况下,长线萎缩,变得难以辨认。你需要的是根据指定的宽度为文本换行。
在这里,在此链路解释如何改变代码中fontwriter.ashx实现文本换行。 http://www.codeproject.com/Questions /189513/Dynamic-Image-Replacement-Method-with-Csharp.aspx
三通过asp.net服务器上运行你的页面。一旦你有,你可以将它保存,点击右键,另存为,与Firefox的图像,Firefox的效果最好为止。
现在,所有的文本被转换成的图像和原始文本将被添加到图像的 ALT 强>标记。希望能帮助到你。
我计划不久后对这个问题的教程。检查www.codeproject.com以后。