我在我的应用程序中创建了一个用于web和pdf视图的饼图(这是一个多语言网站(英语+阿拉伯语))。 对于网络版我正在使用JQplot js插件来创建饼图,这对于pdf的英语和阿拉伯语视图都很好。我正在使用Jpgraph php库。 对于阿拉伯语视图中的pdf版本,问题是传说正在逆转。
这是我用于生成pdf饼图的代码。
function create_graph($chart_array, $plan_id,$lang,$site_lang){
require_once dirname(dirname(dirname(__FILE__))).'/application/third_party/jpgraph/src/jpgraph.php';
require_once dirname(dirname(dirname(__FILE__))).'/application/third_party/jpgraph/src/jpgraph_pie.php';
if(!empty($chart_array)){
foreach($chart_array as $chart){
if ($site_lang=='ar') {
$leg[] = $this->utf8_strrev($chart['0']); // to fix the reverse order issue originally it was only ($leg[] = $chart['0'] - no condition)
}else{
$leg[] = $chart['0'];
}
$data[] = $chart['1'];
}
$flag = true;
foreach($data as $_data){
if($_data != 0)
$flag = false;
}
if(!$flag){
// Create the Pie Graph.
$graph = new PieGraph(1000,950,"auto");
$graph->SetShadow();
$graph ->legend->Pos( 0.25,0.8,"right" ,"right");
//$graph->legend->SetFont(FF_VERDANA,FS_BOLD,12);
$graph->title->SetMargin (20);
// Create plots
$size=0.25;
$p1 = new PiePlot($data);
$p1->SetLegends($leg);
$p1->SetSize($size);
$p1->SetGuideLines(true,false);
$p1->SetGuideLinesAdjust(1.8,3);
$p1->SetCenter(0.25,0.32);
//$p1->value->SetFont(FF_VERDANA);
$p1->title->Set($lang->line('initial_investment_data'));
$p1->title->SetMargin(45);
$p1->SetSliceColors(array('red','orange','yellow','green','purple','blue','brown','black'));
$graph->Add($p1);
$graph->Stroke('assets/graph/initial_investment_'.$plan_id.'.png');
}
}
}
修复我使用以下
的逆序问题function utf8_strrev($str){
preg_match_all('/./us', $str, $ar);
return join('', array_reverse($ar[0]));
}
在这一切中,我得到的是带有空格的反向字符串(例如:bug变为g u b),所以这个词就失去了意义。
我无法找到为什么jpgraph正在扭转传说,以及如何解决这个相反的问题。
答案 0 :(得分:1)
这个问题已经解决,一位同事帮我解决了这个问题。
这是一个问题,不是Jpgraph,而是php gd库,当创建图形图像php Gd库由于字体而还原图例文本。 为了解决这个问题,我们使用了扩展名ar-php
https://sourceforge.net/projects/ar-php/
You need to do the following:
1) download library and put that in your project
2) Include the library file
3) Create a object of the class
4) user the object to convert the legend in Arabic with correct font .
以下代码:
require_once '/application/third_party/ar-php/I18N/Arabic.php';
$Arabic = new I18N_Arabic('Glyphs');
$this->Arabic->utf8Glyphs( $legend_name );
这样可以正常工作。