2017-02-22 41 views
0

Я создаю круговую диаграмму для просмотра в Интернете и в формате pdf в своем приложении (это многоязычный сайт (английский + арабский)). для веб-версии Я использую JQplot js plugin для создания круговых диаграмм, который отлично работает для английского и арабского просмотров для pdf. Я использую библиотеку PHP Jpgraph. для версии в формате 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-библиотека, возвращающая текст легенды из-за шрифта. Для решения этой проблемы мы использовали расширение ар-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); 

Это будет работать нормально.

 Смежные вопросы

  • Нет связанных вопросов^_^