วิธี set ค่า JpGraph ให้เป็นภาษาไทยคับ เห็นมีคนคนถามไว้เยอะอยู่ เลยมาบอกวิธีทำ
วิธี set ค่า JpGraph ให้เป็นภาษาไทยคับ เห็นมีคนคนถามไว้เยอะอยู่ และหลายๆคนยังไม่ได้คำตอบ
ผมพึ่งทำได้เมื่อวานนี้เอง เลยเอาบอกต่อๆกัน น่าจะเป็นประโยชน์ต่อหลายๆท่านนะคับ
1.เข้าไปในไฟล์ jpgraph_ttf.inc.php
ค้นหา
// Actual name of the TTF file used together with FF_CHINESE aka FF_BIG5
// This is the TTF file being used when the font family is specified as
// either FF_CHINESE or FF_BIG5
define('CHINESE_TTF_FONT','bkai00mp.ttf');
แล้วก็
เพิ่ม ต่อจากด้านบน
define('CORDIA_TTF_FONT', 'cordia.ttf');
define('CORDIAB_TTF_FONT', 'cordiab.ttf');
define('CORDIAI_TTF_FONT', 'cordiai.ttf');
define('CORDIAZ_TTF_FONT', 'cordiaz.ttf');
define('ANGSA_TTF_FONT', 'ANGSA.ttf');
define('ANGSAB_TTF_FONT', 'ANGSAB.ttf');
define('ANGSAI_TTF_FONT', 'ANGSAI.ttf');
define('ANGSAZ_TTF_FONT', 'ANGSAZ.ttf');
define('BROWA_TTF_FONT', 'BROWA.ttf');
define('BROWAB_TTF_FONT', 'BROWAB.ttf');
define('BROWAI_TTF_FONT', 'BROWAI.ttf');
define('BROWAZ_TTF_FONT', 'BROWAZ.ttf');
ค้นหา (จะอยู่ใน class TTF)
/* Chinese fonts */
FF_SIMSUN => array(
FS_NORMAL =>'simsun.ttc',
FS_BOLD =>'simhei.ttf',
FS_ITALIC =>'',
FS_BOLDITALIC =>'' ),
FF_CHINESE => array(
FS_NORMAL =>CHINESE_TTF_FONT,
FS_BOLD =>'',
FS_ITALIC =>'',
FS_BOLDITALIC =>'' ),
เพิ่ม ต่อจากด้านบน
/* Thai fonts */
FF_CORDIA => array(
FS_NORMAL=>CORDIA_TTF_FONT,
FS_BOLD=>CORDIAB_TTF_FONT,
FS_ITALIC=>CORDIAI_TTF_FONT,
FS_BOLDITALIC=>CORDIAZ_TTF_FONT ),
FF_ANGSA => array(FS_NORMAL=>ANGSA_TTF_FONT,
FS_BOLD=>ANGSAB_TTF_FONT,
FS_ITALIC=>ANGSAI_TTF_FONT,
FS_BOLDITALIC=>ANGSAZ_TTF_FONT ),
FF_BROWA => array(FS_NORMAL=>BROWA_TTF_FONT,
FS_BOLD=>BROWAB_TTF_FONT,
FS_ITALIC=>BROWAI_TTF_FONT,
FS_BOLDITALIC=>BROWAZ_TTF_FONT ),
2.เข้าไปในไฟล์ jpgraph.php
ค้นหา
// For internal use only
define("_JPG_DEBUG",false);
define("_FORCE_IMGTOFILE",false);
define("_FORCE_IMGDIR",'/tmp/jpgimg/');
เพิ่ม ต่อจากด้านบน
//thai font
define("FF_ANGSA",18);
define("FF_CORDIA",19);
define("FF_BROWA",20);
3.เข้าไปในไฟล์ gd_image.inc.php
เพิ่ม ไว้ส่วนบนๆ ต่อจาก require_once ก็ได้
//thai font
define("FF_ANGSA",18);
define("FF_CORDIA",19);
define("FF_BROWA",20);
อันนี้ที่ผมทำน่ะ
4. สร้าง folder fonts ไว้เก็บ font ไทยที่เราจะเอามาวาง
5. ดาวโหลด font ไทย .ttf ไว้ใน folder fonts
6.วิธีใช้
- เปลี่ยนค่าตรง SetFont เป็น SetFont(FF_ANGSA,FS_BOLD,20); ตัวเลขเป็นขนาดตัวอักษร
- ข้อความที่จะแสดงให้แปลงเป็น UTF-8 ด้วย คำสั่ง iconv('TIS-620','UTF-8','ภาษาไทย');
มีตัวอย่างให้ดูคับ
Code (PHP)
<?php // content="text/plain; charset=utf-8"
define('TTF_DIR',dirname(__FILE__).'/fonts/');
include ("jpgraph/jpgraph.php");
include ('jpgraph/jpgraph_pie.php');
include ('jpgraph/jpgraph_pie3d.php');
require_once("configuration/connectiondb.inc.php");
$sid = 424;
$qid = 1;
$data = array();
$labels= array();
$sql = " SELECT survey_id, question_id, answer_id FROM analysis_of_response ";
$sql .= " WHERE survey_id = '$sid' AND question_id = '$qid' GROUP BY answer_id ";
$obj = mysql_query($sql);
$sql2 = " SELECT answer_text FROM survey_answers ";
$sql2 .= " WHERE survey_id = '$sid' AND question_id = '$qid' ";
$obj2 = mysql_query($sql2);
$sql3 = " SELECT question_details FROM questions ";
$sql3 .= " WHERE survey_id = '$sid' ";
$obj3 = mysql_query($sql3);
$rw3 = mysql_fetch_array($obj3);
$title = iconv('TIS-620','UTF-8',$rw3['question_details']); // SET กราฟเป็น ภาษาไทย
$i = 0;
$j = 0;
while($rw = mysql_fetch_array($obj)) {
$data[$i] = iconv('TIS-620', 'UTF-8', $rw['answer_id']);
$i++;
}
while($rw2 = mysql_fetch_array($obj2)){
$labels[$j] = iconv('TIS-620', 'UTF-8', $rw2['answer_text']);
$j++;
}
// Create the Pie Graph.
$graph = new PieGraph(350,200);
$graph->SetShadow();
// Set A title for the plot
$graph->title->Set($title);
$graph->title->SetFont(FF_ANGSA,FS_BOLD,18);
$graph->title->SetColor("darkblue");
$graph->legend->Pos(0.1,0.2);
// Create 3D pie plot
$p1 = new PiePlot3d($data);
$p1->SetTheme("sand");
$p1->SetCenter(0.4);
$p1->SetSize(80);
// Adjust projection angle
$p1->SetAngle(45);
// As a shortcut you can easily explode one numbered slice with
$p1->ExplodeSlice(3);
// Setup the slice values
$p1->value->SetFont(FF_ANGSA,FS_BOLD,12);
$p1->value->SetColor("navy");
$p1->SetLegends($labels);
$graph->Add($p1);
$graph->Stroke();
?>
Tag : PHP
ประวัติการแก้ไข 2011-06-02 10:10:21
Date :
2011-06-02 10:09:10
By :
TEST_CODE
View :
6319
Reply :
5
ตกลงทำได้แล้วเหรอครับ อยากจะช่วยน่ะครับ แต่ยังไม่เคยจริง ๆ จัง ๆ กับ JpGraph ครับ ยังไงก็ขอบคุณแทนสมาชิกท่านอื่น ๆ ด้วยครับ
Date :
2011-06-02 11:50:46
By :
webmaster
ไม่เป็นไรคับ พี่วิน เพราะผมก็ เข้าๆ- ออกๆ web นี้อยู่ประจำอยู่แล้ว
อย่าลืมเรื่องเสื้อ Thaicreate ด้วยนะคับ รออยู่
Date :
2011-06-02 12:41:30
By :
TEST_CODE
ขอบคุณมากๆครับปม...ผมก็ได้แล้วคับ..ขอบคุณคราฟฟฟฟฟฟฟฟฟฟ
Date :
2012-09-22 15:03:31
By :
นาจิน
สร้างกราฟphp ด้วย jpgraph ภาษาไทยผมเป็นอย่างนี้ครับจะแก้อย่างไรครับ
Date :
2016-02-18 21:44:08
By :
พรชัย
Date :
2016-02-18 21:46:27
By :
พรชัย
Load balance : Server 05