2017-02-22 51 views
0

我正在爲我的應用程序(它是一個多語種網站(英文+阿拉伯文))爲web和pdf視圖製作餅圖。 爲網絡版本我正在使用JQplot js插件來創建餅圖的英語和阿拉伯語視圖都很好,我正在使用Jpgraph php庫。 阿拉伯語視圖中的PDF版本問題是傳說以相反的順序來到。傳說在阿拉伯文jpgraph逆轉

web view

pdf view

這裏是我使用生成餅圖對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])); 
} 

在所有這一切,我得到的是相反的字符串空間(例如:錯誤變成GUB),所以這個詞失去它意思。

我找不到爲什麼jpgraph正在顛倒傳說,以及如何解決這個相反的問題。

回答

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); 

這將正常工作。