ผู้สนับสนุน

วันจันทร์ที่ ๓๐ มีนาคม พ.ศ. ๒๕๕๒

PHP สร้าง PDF ภาษาไทย

ขอบคุณ @gookcompsci narisa.com  fpdf.org fpdf.org phorum 

ขั้นแรก ไป download fpdf จาก fpdf.org ก่อน

แตกไฟล์ออกมามันจะประกอบด้วย dir และ file ต่างๆ ดังนี้


เอาทั้งหมดนี้ไปวางไว้ใน dir ที่จำใช้ทำงาน เช่น ทำงานที่ workspace/ ก็เอาไปวางเป็น workspace/fpdf/ เป็นต้น(ปรับแก้ได้ตามใจนะไม่ได้บังคับใช้ในการอ้างอิงที่อยู่เท่านั้น)

อันนี้ code ลองทดสอบอันแรก เอามาจาก fpdf.org เลยเพื่อทดสอบว่า fpdf ทีเราเอามาใช้งานได้จริง
สมมติว่า save เป็นไฟล์ "firstpage.php" ไว้ที่ workspace/ 
เราก็จะเข้าไปทดสอบได้จาก http://hostname/.../workspace/firstpage.php 

<?php
 
require('./fpdf/fpdf.php');
 
$pdf=new FPDF();
 
$pdf->AddPage();
 
$pdf->SetFont('Arial','B',16);
 
$pdf->Cell(40,10,'Hello World!');
 
$pdf->Output();
 
?>

ถ้าได้ก็ไปต่อได้ถ้าไม่ได้ก็ลองใหม่(-_-)

ขั้นที่ 2 เตรียม font (ทำบน Windows Vista)
download ตัวทำ font http://www.fpdf.org/fr/dl.php?id=22
นำทั้งหมดมาที่ dir workspace/

copy font จาก dir font มาที่ dir ที่ทำงาน (เพื่อให้ง่าย)
ตัวอย่างเช่น เอา Font "Angsana New" จาก C:\Windows\Fonts มาใส่ไว้ที่ dir workspace/
โดยไฟล์ของ Font "Angsana New" ชื่อ angsa.ttf

ขั้นที่ 3
เปิด cmd ขึ้นมาแล้วย้ายตัวเองไปที่ dir workspace/
พิมพ์
ttf2pt1 -b -L cp874.map angsa.ttf angsa
จากขั้นตอนนี้จะได้ไฟล์มาสองตัวคือ angsa.afm กับ angsa.pfb copy ใส่ไว้ที่ workspace/fpdf/font/makefont/

ขั้นที่ 4
สร้างไฟล์ php 1 ไฟล์เพื่อสร้างfont ให้ใช้ได้กับ fpdf อีกที
สมมุติว่าชื่อ make_angsa.php อยู่ที่ workspace/fpdf/font/makefont/
<?
include('makefont.php');
MakeFont('angsa,pfb','angsa.afm','cp874')
?>

เปิด cmd แล้วมาที่ dir นี้พิมพ์
php make_angsa.php
จะได้ไฟล์ออกมาอีก 2 ไฟล์คือ angsa.php และ angsa.z
copy เอาทั้งสองตัวไปวางที่ workspace/fpdf/font/

น่าจะใช้ได้แล้วลองทดสอบโดย
<?php
 
require('./fpdf/fpdf.php');
 $str = "มอสสิล่า";
 
$pdf=new FPDF();
 $pdf->AddFont('angsa','','angsa.php');
 
$pdf->AddPage();
 
$pdf->SetFont('angsa','',16);
 
$pdf->Cell(40,10,$str);
 
$pdf->Output();
 
?>

น่าจะได้แล้วนะ

ขั้นที่ พิเศษ
จากผมที่ผมได้ลองถ้าเปลี่ยน encoding เป็น utf8 แล้วมันจะใช้ไม่ได้แฮะ(จำเป็นต้องใช้เพราะดึงข้อมูล utf8 จาก db) ผมก็เลยงงๆ ถามๆ ไปเรื่อย แล้วก็ได้คำตอบจาก  @gookcompsci ว่าให้ลองใช้ iconv ดู โดยให้ดูก่อนว่า php มันเปิด function นี้ไว้หรือเปล่าถ้ามันเปิดอยู่ก็ง่ายขึ้นครับ

อันนี้ตัวอย่างการใช้ iconv
<?
$str = "string encoding เริ่มต้นสมมุติว่าเป็น utf8";
//$str = iconv('encoding เริ่มต้น','encoding ปลายทาง','string ที่จะเปลี่ยน');
$str = iconv('UTF-8','CP874',$str); //ถูกแปลงเป็น CP874 ที่นี่
?>

ตัวอย่างการใช้งานกับ db
<?php
include('config.php');
include('opendb.php');
require('./fpdf/fpdf.php');
$sql = "SELECT * FROM user";
$result = mysql_query($sql);
$str = '';
while($row = mysql_fetch_array($result)){
        $str .= $row['name'];
}
$str = iconv('UTF-8','CP874',$str);

$pdf=new FPDF();
$pdf->AddFont('angsa','','angsa.php');
$pdf->AddPage();
$pdf->SetFont('angsa','',16);
$pdf->Cell(40,10,$str);
$pdf->Output();

include('closedb.php');

?>


เรื่องจัดหน้าใน pdf รบกวนอ่านใน fpdf.org

ซ้ำแล้วขออภัยบอกได้ ,ไม่ละเอียดไม่ชัดเจนบอกได้แก้ให้(ถ้าว่าง) ,มีวิธีที่ดีกว่าบอกได้ขอบคุณ(ม๊ากกๆ) ,จัดหน้า ใส่สีไม่สม่ำเสมอขออภัย

แนะนำติชมเพิ่มเติมเชิญตามอัธยาศัย ภาษาวัยรุ่นอะไรก็ได้อ่านออก


วันพุธที่ ๑๑ มีนาคม พ.ศ. ๒๕๕๒

วิธีใช้ Picasa

สำหรับคนที่กำลังหาที่เก็บรูป ไม่รู้จะเก็บที่ไหน ไม่รู้จะใช้ยังไง

ลองทำมาให้ดูเลยครับ ค่อยๆ ดูตามรูปเลยครับ ข้อความอธิบายไม่ค่อยเยอะต้องขออภัย

วันอังคารที่ ๑๐ มีนาคม พ.ศ. ๒๕๕๒

ภาษาไทยกับ ubuntu

ขั้นแรกสำหรับชาวไทยเมื่อลง ubuntu เสร็จแล้วไม่ได้เลือกภาษาตั้งแต่ต้น แน่นอนมันเป็นสิ่งที่ให้เราเกือบเลิกใช้มันได้เลย

มาดูวิธีแก้กัน ตามรูป mouse ไปเลย
คลิ๊กขวาที่ USA ที่ add เพิ่มเข้ามา