Viewing file: fpdf_thai.php (21.62 KB) -rwxr-xr-x Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php /******************************************************************************** * Software : FPDF Version Thai * * Version : 1.50 * * ผู้พัฒนา : Mr.Sirichai Fuangfoo * * วันที่ : 2005-03-31 * * อ้างอิง : www.fpdf.org * * ประเภท : Freeware * *********************************************************************************/
require('fpdf.php');
class FPDF_TH extends FPDF { var $txt_error; var $pointX; var $pointY; var $checkFill;
/******************************************************************************** * ประเภท : Constructor ของ Class FPDF_TH * * การทำงาน : ใช้ในการกำหนดรูบแบบของเอกสาร PDF * *********************************************************************************/ function FPDF_TH($orientation='P',$unit='mm',$format='A4') { $this->FPDF($orientation,$unit,$format); }
/******************************************************************************** * ประเภท : Function ของ Class FPDF_TH * * อ้างอิง : Function MultiCell ของ Class FPDF * * การทำงาน : ใช้ในการพิมพ์ข้อความหลายบรรทัดของเอกสาร PDF * * รูบแบบ : MultiCell ( * * $w = ความกว้างของMultiCell * * , $h = ความสูงของMultiCell * * , $txt = ข้อความที่จะพิมพ์ * * , $border = กำหนดการแสดงเส้นกรอบ(0 = ไม่แสดง, 1= แสดง) * * , $align = ตำแหน่งข้อความ(L = ซ้าย, R = ขวา, C = กึ่งกลาง) * * , $fill = กำหนดการแสดงสีของMultiCell(0 = ไม่แสดง, 1 = แสดง) * * ) * *********************************************************************************/ /*function MultiCell($w,$h,$txt,$border=0,$align='L',$fill=0) { //Output text with automatic or explicit line breaks $cw=&$this->CurrentFont['cw']; if($w==0) $w=$this->w-$this->rMargin-$this->x; $wmax=($w-2*$this->cMargin)*1000/$this->FontSize; $s=str_replace("\r",'',$txt); $nb=strlen($s); if($nb>0 && $s[$nb-1]=="\n") $nb--; $b=0; if($border) { if($border==1) { $border='LTRB'; $b='LRT'; $b2='LR'; } else { $b2=''; if(strpos($border,'L')!==false) $b2.='L'; if(strpos($border,'R')!==false) $b2.='R'; $b=(strpos($border,'T')!==false) ? $b2.'T' : $b2; } } $sep=-1; $i=0; $j=0; $l=0; $ns=0; $nl=1; while($i<$nb) { //Get next character $c=$s{$i}; if($c=="\n") { //Explicit line break if($this->ws>0) { $this->ws=0; $this->_out('0 Tw'); } $this->Cell($w,$h,substr($s,$j,$i-$j),$b,2,$align,$fill); $i++; $sep=-1; $j=$i; $l=0; $ns=0; $nl++; if($border && $nl==2) $b=$b2; continue; } if($c==' ') { $sep=$i; $ls=$l; $ns++; } $l+=$cw[$c]; if($l>$wmax) { //Automatic line break if($sep==-1) { if($i==$j) $i++; if($this->ws>0) { $this->ws=0; $this->_out('0 Tw'); } $this->Cell($w,$h,substr($s,$j,$i-$j),$b,2,$align,$fill); } else { if($align=='J') { $this->ws=($ns>1) ? ($wmax-$ls)/1000*$this->FontSize/($ns-1) : 0; $this->_out(sprintf('%.3f Tw',$this->ws*$this->k)); } $this->Cell($w,$h,substr($s,$j,$sep-$j),$b,2,$align,$fill); $i=$sep+1; } $sep=-1; $j=$i; $l=0; $ns=0; $nl++; if($border && $nl==2) $b=$b2; } else $i++; } //Last chunk if($this->ws>0) { $this->ws=0; $this->_out('0 Tw'); } if($border && strpos($border,'B')!==false) $b.='B'; $this->Cell($w,$h,substr($s,$j,$i-$j),$b,2,$align,$fill); $this->x=$this->lMargin; }*/
/******************************************************************************** * ประเภท : Function ของ Class FPDF_TH * * อ้างอิง : Function Write ของ Class FPDF * * การทำงาน : ใช้ในการพิมพ์ข้อความทีละบรรทัดของเอกสาร PDF * * รูบแบบ : TWrite ( * * $h = ความสูงของเซลล์ * * , $txt = ข้อความที่จะพิมพ์ * * , $link = URL ที่ต้องการให้ข้อความเชื่อมโยงไปถึง * * ) * *********************************************************************************/ /*function TWrite($h,$txt,$link='') { //Output text in flowing mode $cw=&$this->CurrentFont['cw']; $w=$this->w-$this->rMargin-$this->x; $wmax=($w-2*$this->cMargin)*1000/$this->FontSize; $s=str_replace("\r",'',$txt); $nb=strlen($s); $sep=-1; $i=0; $j=0; $l=0; $nl=1; while($i<$nb) { //Get next character $c=$s{$i}; if($c=="\n") { //Explicit line break $this->Cell($w,$h,substr($s,$j,$i-$j),0,2,'',0,$link); $i++; $sep=-1; $j=$i; $l=0; if($nl==1) { $this->x=$this->lMargin; $w=$this->w-$this->rMargin-$this->x; $wmax=($w-2*$this->cMargin)*1000/$this->FontSize; } $nl++; continue; } if($c==' ') $sep=$i; $l+=$cw[$c]; if($l>$wmax) { //Automatic line break if($sep==-1) { if($this->x>$this->lMargin) { //Move to next line $this->x=$this->lMargin; $this->y+=$h; $w=$this->w-$this->rMargin-$this->x; $wmax=($w-2*$this->cMargin)*1000/$this->FontSize; $i++; $nl++; continue; } if($i==$j) $i++; $this->Cell($w,$h,substr($s,$j,$i-$j),0,2,'',0,$link); } else { $this->Cell($w,$h,substr($s,$j,$sep-$j),0,2,'',0,$link); $i=$sep+1; } $sep=-1; $j=$i; $l=0; if($nl==1) { $this->x=$this->lMargin; $w=$this->w-$this->rMargin-$this->x; $wmax=($w-2*$this->cMargin)*1000/$this->FontSize; } $nl++; } else $i++; } //Last chunk if($i!=$j) $this->Cell($l/1000*$this->FontSize,$h,substr($s,$j),0,0,'',0,$link); } */ /******************************************************************************** * ประเภท : Function ของ Class FPDF_TH * * อ้างอิง : Function Cell ของ Class FPDF * * การทำงาน : ใช้ในการพิมพ์ข้อความทีละบรรทัดของเอกสาร PDF * * รูบแบบ : Cell ( * * $w = ความกว้างของCell * * , $h = ความสูงของCell * * , $txt = ข้อความที่จะพิมพ์ * * , $border = กำหนดการแสดงเส้นกรอบ(0 = ไม่แสดง, 1= แสดง) * * , $ln = ตำแหน่งที่อยู่ถัดไปจากเซลล์ * * (0 = ขวา, 1 = บรรทัดถัดไป, 2 = ด้านล่าง) * * , $align = ตำแหน่งข้อความ * (L = ซ้าย, R = ขวา, C = กึ่งกลาง, T = บน, B = ล่าง) * * , $fill = กำหนดการแสดงสีของCell(0 = ไม่แสดง, 1 = แสดง) * * , $link = URL ที่ต้องการให้ข้อความเชื่อมโยงไปถึง * * ) * *********************************************************************************/ function Cell($w,$h=0,$txt='',$border=0,$ln=0,$align='',$fill=0,$link='') { $this->checkFill=""; $k=$this->k; if($this->y+$h>$this->PageBreakTrigger && !$this->InFooter && $this->AcceptPageBreak()) { //ขึ้นหน้าใหม่อัตโนมัต $x=$this->x; $ws=$this->ws; if($ws>0) { $this->ws=0; $this->_out('0 Tw'); } $this->AddPage($this->CurOrientation); $this->x=$x; if($ws>0) { $this->ws=$ws; $this->_out(sprintf('%.3f Tw',$ws*$k)); } } //กำหนดความกว้างเซลล์เท่ากับหน้ากระดาษ if($w==0) $w=$this->w-$this->rMargin-$this->x; $s=''; //กำหนดการแสดงเส้นกรอบ 4 ด้าน และสีกรอบ if($fill==1 || $border==1) { if($fill==1) $op=($border==1) ? 'B' : 'f'; else $op='S'; $s=sprintf('%.2f %.2f %.2f %.2f re %s ',$this->x*$k,($this->h-$this->y)*$k,$w*$k,-$h*$k,$op); if($op=='f') $this->checkFill=$op; } //กำหนดการแสดงเส้นกรอบทีละเส้น if(is_string($border)) { $x=$this->x; $y=$this->y; if(strpos($border,'L')!==false) $s.=sprintf('%.2f %.2f m %.2f %.2f l S ',$x*$k,($this->h-$y)*$k,$x*$k,($this->h-($y+$h))*$k); if(strpos($border,'T')!==false) $s.=sprintf('%.2f %.2f m %.2f %.2f l S ',$x*$k,($this->h-$y)*$k,($x+$w)*$k,($this->h-$y)*$k); if(strpos($border,'R')!==false) $s.=sprintf('%.2f %.2f m %.2f %.2f l S ',($x+$w)*$k,($this->h-$y)*$k,($x+$w)*$k,($this->h-($y+$h))*$k); if(strpos($border,'B')!==false) $s.=sprintf('%.2f %.2f m %.2f %.2f l S ',$x*$k,($this->h-($y+$h))*$k,($x+$w)*$k,($this->h-($y+$h))*$k); }
if($txt!=='') { $x=$this->x; $y=$this->y; //กำหนดการจัดข้อความในเซลล์ตามแนวระดับ if(strpos($align,'R')!==false) $dx=$w-$this->cMargin-$this->GetStringWidth($txt); elseif(strpos($align,'C')!==false) $dx=($w-$this->GetStringWidth($txt))/2; else $dx=$this->cMargin; //กำหนดการจัดข้อความในเซลล์ตามแนวดิ่ง if(strpos($align,'T')!==false) $dy=$h-(.7*$this->k*$this->FontSize); elseif(strpos($align,'B')!==false) $dy=$h-(.3*$this->k*$this->FontSize); else $dy=.5*$h; //กำหนดการขีดเส้นใต้ข้อความ if($this->underline) { //กำหนดบันทึกกราฟิก if($this->ColorFlag) $s.='q '.$this->TextColor.' '; //ขีดเส้นใต้ข้อความ0 $s.=' '.$this->_dounderline($this->x+$dx,$this->y+.5*$h+.3*$this->FontSize,$txt); //กำหนดคืนค่ากราฟิก if($this->ColorFlag) $s.=' Q'; } //กำหนดข้อความเชื่อมโยงไปถึง if($link) $this->Link($this->x,$this->y,$this->GetStringWidth($txt),$this->FontSize,$link); if($s) $this->_out($s); $s=''; //ตัดอักษรออกจากข้อความ ทีละตัวเก็บลงอะเรย์ $array_th=substr($txt,0); $i=0;
while($i<=strlen($txt)) { //กำหนดตำแหน่งที่จะพิมพ์อักษรในเซลล์ $this->pointX=($x+$dx+.02*$this->GetStringWidth($array_th[$i-1]))*$k; $this->pointY=($this->h-($y+$dy+.3*$this->FontSize))*$k; //ตรวจสอบอักษร ปรับตำแหน่งและทำการพิมพ์ $this->_checkT($array_th,$i,$s); //ตรวจสอบการใส่เลขหน้า if($array_th[$i]=='{'&&$array_th[$i+1]=='n'&&$array_th[$i+2]=='b'&&$array_th[$i+3]=='}') $i=$i+3; //เลื่อนตำแหน่ง x ไปที่ตัวที่จะพิมพ์ถัดไป $x=$x+$this->GetStringWidth($array_th[$i]); $i++; }
} else //นำค่าไปแสดงเมื่อไม่มีข้อความ $this->_out($s);
$this->lasth=$h; //ตรวจสอบการวางตำแหน่งของเซลล์ถัดไป if($ln>0) { //ขึ้นบรรทัดใหม่ $this->y+=$h; if($ln==1) $this->x=$this->lMargin; } else $this->x+=$w; }
/******************************************************************************** * ประเภท : Function ของ Class FPDF_TH * * อ้างอิง : Mr.Wittawas Pantumchinda * * การทำงาน : ใช้ในกำหนดฟอนต์สำหรับภาษาไทยให้โปรแกรมได้รู้จัก * * ฟอนต์ภาษาไทย : AngsanaNew, CordiaNew, Tahoma, BrowalliaNew * * , KoHmu, KoHmu2, KoHmu3, MicrosoftSansSerif * * , PLE_Cara, PLE_Joy, PLE_Tom, DilleniaUPC * * , EucrosiaUPC, FreesiaUPC, IrisUPC, KodchiangUPC * * , LilyUPC * *********************************************************************************/ //function SetThaiFont(){ //กำหนดฟอนต์ภาษาไทย // $this->AddFont('AngsanaNew','','angsa.php'); // $this->AddFont('AngsanaNew','B','angsab.php'); // $this->AddFont('AngsanaNew','I','angsai.php'); // $this->AddFont('AngsanaNew','IB','angsaz.php'); // $this->AddFont('AngsanaUPC','','AngsanaUPC.php'); // $this->AddFont('CordiaNew','','cordia.php'); // $this->AddFont('CordiaNew','B','cordiab.php'); // $this->AddFont('CordiaNew','I','cordiai.php'); // $this->AddFont('CordiaNew','IB','cordiaz.php'); // $this->AddFont('CordiaUPC','','CordiaUPC.php'); // $this->AddFont('Tahoma','','tahoma.php'); // $this->AddFont('Tahoma','B','tahomab.php'); // $this->AddFont('BrowalliaNew','','browa.php'); // $this->AddFont('BrowalliaNew','B','browab.php'); // $this->AddFont('BrowalliaNew','I','browai.php'); // $this->AddFont('BrowalliaNew','IB','browaz.php'); // $this->AddFont('BrowalliaUPC','','BrowalliaUPC.php'); // $this->AddFont('KoHmu','','kohmu.php'); // $this->AddFont('KoHmu2','','kohmu2.php'); // $this->AddFont('KoHmu3','','kohmu3.php'); // $this->AddFont('MicrosoftSansSerif','','micross.php'); // $this->AddFont('PLE_Cara','','plecara.php'); // $this->AddFont('PLE_Care','B','plecareb.php'); // $this->AddFont('PLE_Joy','','plejoy.php'); // $this->AddFont('PLE_Tom','','pletom.php'); // $this->AddFont('PLE_Tom','B','pletomb.php'); // $this->AddFont('PLE_TomOutline','','pletomo.php'); // $this->AddFont('PLE_TomWide','','pletomw.php'); // $this->AddFont('DilleniaUPC','','dill.php'); // $this->AddFont('DilleniaUPC','B','dillb.php'); // $this->AddFont('DilleniaUPC','I','dilli.php'); // $this->AddFont('DilleniaUPC','IB','dillz.php'); // $this->AddFont('EucrosiaUPC','','eucro.php'); // $this->AddFont('EucrosiaUPC','B','eucrob.php'); // $this->AddFont('EucrosiaUPC','I','eucroi.php'); // $this->AddFont('EucrosiaUPC','IB','eucroz.php'); // $this->AddFont('FreesiaUPC','','free.php'); // $this->AddFont('FreesiaUPC','B','freeb.php'); // $this->AddFont('FreesiaUPC','I','freei.php'); // $this->AddFont('FreesiaUPC','IB','freez.php'); // $this->AddFont('IrisUPC','','iris.php'); // $this->AddFont('IrisUPC','B','irisb.php'); // $this->AddFont('IrisUPC','I','irisi.php'); // $this->AddFont('IrisUPC','IB','irisz.php'); // $this->AddFont('JasmineUPC','','jasm.php'); // $this->AddFont('JasmineUPC','B','jasmb.php'); // $this->AddFont('JasmineUPC','I','jasmi.php'); // $this->AddFont('JasmineUPC','IB','jasmz.php'); // $this->AddFont('KodchiangUPC','','kodc.php'); // $this->AddFont('KodchiangUPC','B','kodc.php'); // $this->AddFont('KodchiangUPC','I','kodci.php'); // $this->AddFont('KodchiangUPC','IB','kodcz.php'); // $this->AddFont('LilyUPC','','lily.php'); // $this->AddFont('LilyUPC','B','lilyb.php'); // $this->AddFont('LilyUPC','I','lilyi.php'); // $this->AddFont('LilyUPC','IB','lilyz.php'); //}
/******************************************************************************** * ประเภท : Function ของ Class FPDF_TH * * อ้างอิง : Mr.Wittawas Pantumchinda * * การทำงาน : ใช้ในสร้างบาร์โคด * * รูบแบบ : Code39( * * $xpos = กำหนดจุดเริ่มพิมพ์ตามแกน X * * , $ypos = กำหนดจุดเริ่มพิมพ์ตามแกน y * * , $code = ข้อความหรือตัวเลขที่จะทำเป็นบาร์โคด * * , $baseline = กำหนดความกว้างของแถบบาร์โคด * * , $height = กำหนดความสูงของแถบบาร์โคด * * ) * *********************************************************************************/ function Code39($xpos, $ypos, $code, $baseline=0.5, $height=5) { //ทำบาร์โคด $wide = $baseline; $narrow = $baseline / 3 ; $gap = $narrow;
$barChar['0'] = 'nnnwwnwnn'; $barChar['1'] = 'wnnwnnnnw'; $barChar['2'] = 'nnwwnnnnw'; $barChar['3'] = 'wnwwnnnnn'; $barChar['4'] = 'nnnwwnnnw'; $barChar['5'] = 'wnnwwnnnn'; $barChar['6'] = 'nnwwwnnnn'; $barChar['7'] = 'nnnwnnwnw'; $barChar['8'] = 'wnnwnnwnn'; $barChar['9'] = 'nnwwnnwnn'; $barChar['A'] = 'wnnnnwnnw'; $barChar['B'] = 'nnwnnwnnw'; $barChar['C'] = 'wnwnnwnnn'; $barChar['D'] = 'nnnnwwnnw'; $barChar['E'] = 'wnnnwwnnn'; $barChar['F'] = 'nnwnwwnnn'; $barChar['G'] = 'nnnnnwwnw'; $barChar['H'] = 'wnnnnwwnn'; $barChar['I'] = 'nnwnnwwnn'; $barChar['J'] = 'nnnnwwwnn'; $barChar['K'] = 'wnnnnnnww'; $barChar['L'] = 'nnwnnnnww'; $barChar['M'] = 'wnwnnnnwn'; $barChar['N'] = 'nnnnwnnww'; $barChar['O'] = 'wnnnwnnwn'; $barChar['P'] = 'nnwnwnnwn'; $barChar['Q'] = 'nnnnnnwww'; $barChar['R'] = 'wnnnnnwwn'; $barChar['S'] = 'nnwnnnwwn'; $barChar['T'] = 'nnnnwnwwn'; $barChar['U'] = 'wwnnnnnnw'; $barChar['V'] = 'nwwnnnnnw'; $barChar['W'] = 'wwwnnnnnn'; $barChar['X'] = 'nwnnwnnnw'; $barChar['Y'] = 'wwnnwnnnn'; $barChar['Z'] = 'nwwnwnnnn'; $barChar['-'] = 'nwnnnnwnw'; $barChar['.'] = 'wwnnnnwnn'; $barChar[' '] = 'nwwnnnwnn'; $barChar['*'] = 'nwnnwnwnn'; $barChar['$'] = 'nwnwnwnnn'; $barChar['/'] = 'nwnwnnnwn'; $barChar['+'] = 'nwnnnwnwn'; $barChar['%'] = 'nnnwnwnwn';
$this->SetFont('Arial','',10); $this->Text($xpos, $ypos + $height + 4, $code); $this->SetFillColor(0);
$code = '*'.strtoupper($code).'*'; for($i=0; $i<strlen($code); $i++) { $char = $code{$i}; if(!isset($barChar[$char])) { $this->Error('Invalid character in barcode: '.$char); } $seq = $barChar[$char]; for($bar=0; $bar<9; $bar++){ if($seq{$bar} == 'n'){ $lineWidth = $narrow; }else{ $lineWidth = $wide; } if($bar % 2 == 0){ $this->Rect($xpos, $ypos, $lineWidth, $height, 'F'); } $xpos += $lineWidth; } $xpos += $gap; } }
/******************************************************************************** * * * Protected methods * * * *********************************************************************************/
/******************************************************************************** * ใช้งาน : Function Cell ของ Class FPDF_TH * * การทำงาน : ใช้ในการตรวจสอบอักษร และปรับตำแหน่งก่อนที่จะทำการพิมพ์ * * ความต้องการ : $array_th = อะเรย์ของอักษรที่ตัดออกจากข้อความ * * $i = ลำดับปัจจุบันในอะเรย์ที่จะทำการตรวจสอบ * * $s = สายอักขระของโคด PDF * *********************************************************************************/ function _checkT($array_th,$i,$s) { //ตวจสอบการแสดงผลของตัวอักษรเหนือสระบน if($this->_errorTh($array_th[$i])==1) { //ตรวจสอบตัวอักษรก่อนหน้านั้นไม่ใช่สระบน ปรับตำแหน่งลง if(($this->_errorTh($array_th[$i-1])!=2)&&($array_th[$i+1]!="ำ")) //ถ้าตัวนั้นเป็นการันต์ if($array_th[$i]=="์") $this->pointY=$this->pointY-.17*$this->FontSize*$this->k; //ถ้าตัวนั้นเป็นไม้เอกหรือไม้จัตวา elseif($array_th[$i]=="่"||$array_th[$i]=="๋") $this->pointY=$this->pointY-.2*$this->FontSize*$this->k; else $this->pointY=$this->pointY-.23*$this->FontSize*$this->k; //ตรวจสอบตัวอักษรตัวก่อนหน้านั้นเป็นตัวอักษรหางยาวบน if($this->_errorTh($array_th[$i-1])==3) //ถ้าตัวนั้นเป็นการันต์ if($array_th[$i]=="์") $this->pointX=$this->pointX-.4*$this->GetStringWidth($array_th[$i-1])*$this->k; //ถ้าตัวนั้นเป็นไม้เอกหรือไม้จัตวา elseif($array_th[$i]=="่"||$array_th[$i]=="๋") $this->pointX=$this->pointX-.17*$this->GetStringWidth($array_th[$i-1])*$this->k; else $this->pointX=$this->pointX-.25*$this->GetStringWidth($array_th[$i-1])*$this->k;
//ตรวจสอบตัวอักษรตัวก่อนหน้านั้นไปอีกเป็นตัวอักษรหางยาวบน if($this->_errorTh($array_th[$i-2])==3) { //ถ้าตัวนั้นเป็นการันต์ if($array_th[$i]=="์") $this->pointX=$this->pointX-.4*$this->GetStringWidth($array_th[$i-2])*$this->k; //ถ้าตัวนั้นเป็นไม้เอกหรือไม้จัตวา elseif($array_th[$i]=="่"||$array_th[$i]=="๋") $this->pointX=$this->pointX-.17*$this->GetStringWidth($array_th[$i-2])*$this->k; else $this->pointX=$this->pointX-.25*$this->GetStringWidth($array_th[$i-2])*$this->k; } } //จบการตรวจสอบตัวอักษรเหนือสระบน
//ตวจสอบการแสดงผลของตัวอักษรสระบน elseif($this->_errorTh($array_th[$i])==2) { //ตรวจสอบตัวอักษรตัวก่อนหน้านั้นเป็นตัวอักษรหางยาวบน if($this->_errorTh($array_th[$i-1])==3) $this->pointX=$this->pointX-.17*$this->GetStringWidth($array_th[$i-1])*$this->k; //ถ้าตัวนั้นเป็นสระอำ if($array_th[$i]=="ำ") //ตรวจสอบตัวอักษรตัวก่อนหน้านั้นเป็นตัวอักษรหางยาวบน if($this->_errorTh($array_th[$i-2])==3) $this->pointX=$this->pointX-.17*$this->GetStringWidth($array_th[$i-2])*$this->k; } //จบการตรวจสอบตัวอักษรสระบน
//ตวจสอบการแสดงผลของตัวอักษรสระล่าง elseif($this->_errorTh($array_th[$i])==6) { //ตรวจสอบตัวอักษรตัวก่อนหน้านั้นเป็นอักขระ ฏ. กับ ฎ. if($this->_errorTh($array_th[$i-1])==4) $this->pointY=$this->pointY-.25*$this->FontSize*$this->k; //ตรวจสอบตัวอักษรตัวก่อนหน้านั้นเป็นตัวอักษร ญ. กับ ฐ. elseif($this->_errorTh($array_th[$i-1])==5) { $z=""; if($this->checkFill=='f') $z.='q '; else $z.='q 1 g '; //สร้างสี่เหลี่ยมไปปิดที่ฐานล่างของตัวอักษร ญ. กับ ฐ. $z.=$s.sprintf('%.2f %.2f %.2f %.2f re f ',$this->pointX-$this->GetStringWidth($array_th[$i-1])*$this->k,$this->pointY-.27*$this->FontSize*$this->k,.9*$this->GetStringWidth($array_th[$i-1])*$this->k,.25*$this->FontSize*$this->k); $z.='Q '; $this->_out($z); $z=""; } //จบการตรวจสอบตัวอักษรสระล่าง } //จบการตรวจสอบตัวอักษระสระล่าง //ตวจสอบกรณีที่เป็นการแสดงเลขหน้าทั้งหมด if($array_th[$i]=='{'&&$array_th[$i+1]=='n'&&$array_th[$i+2]=='b'&&$array_th[$i+3]=='}') $this->TText('{nb}',$s); else $this->TText($array_th[$i],$s); }
/******************************************************************************** * ใช้งาน : Function _checkT ของ Class FPDF_TH * * การทำงาน : ใช้ในการตรวจสอบอักษรที่อาจจะทำให้เกิดการพิมพ์ที่ผิดพลาด * * ความต้องการ : $char_th = ตัวอักษรที่จะใช้ในการเปรียบเทียบ * *********************************************************************************/ function _errorTh($char_th) { $txt_error=0; //ตัวอักษรบน-บน if(($char_th=='่')||($char_th=='้')||($char_th=='๊')||($char_th=='๋')||($char_th=='์')) $txt_error=1; //ตัวอักษรบน elseif(($char_th=='ิ')||($char_th=='ี')||($char_th=='ึ')||($char_th=='ื')||($char_th=='็')||($char_th=='ั')||($char_th=='ำ')) $txt_error=2; //ตัวอักษรกลาง-บน elseif(($char_th=='ป')||($char_th=='ฟ')||($char_th=='ฝ')) $txt_error=3; //ตัวอักษรกลาง-ล่าง elseif(($char_th=='ฎ')||($char_th=='ฏ')) $txt_error=4; //ตัวอักษรกลาง-ล่าง elseif(($char_th=='ญ')||($char_th=='ฐ')) $txt_error=5; //ตัวอักษรสระล่าง elseif(($char_th=='ุ')||($char_th=='ู')) $txt_error=6; else $txt_error=0; return $txt_error; }
/******************************************************************************** * ใช้งาน : Function _checkT ของ Class FPDF_TH * * การทำงาน : ใช้ในพิมพ์ตัวอักษรที่ตรวจสอบแล้ว * * ความต้องการ : $txt_th = ตัวอักษร 1 ตัว ที่ตรวจสอบแล้ว * * $s = สายอักขระของโคด PDF * *********************************************************************************/ function TText($txt_th,$s) { //ตวจสอบการใส่สีเซลล์ if($this->ColorFlag) $s.='q '.$this->TextColor.' '; $txt_th2=str_replace(')','\\)',str_replace('(','\\(',str_replace('\\','\\\\',$txt_th))); //ระบุตำแหน่ง และพิมพ์ตัวอักษร $s.=sprintf('BT %.2f %.2f Td (%s) Tj ET',$this->pointX,$this->pointY,$txt_th2); if($this->ColorFlag) $s.=' Q'; if($s) $this->_out($s); }
//End of class }
?>
|