ขอบคุณ @gookcompsci narisa.com fpdf.org fpdf.org phorum
ขั้นแรก ไป download fpdf จาก fpdf.org ก่อน
เอาทั้งหมดนี้ไปวางไว้ใน 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
font map : cp874.map iso-8859-11.map
นำทั้งหมดมาที่ 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 |
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
ซ้ำแล้วขออภัยบอกได้ ,ไม่ละเอียดไม่ชัดเจนบอกได้แก้ให้(ถ้าว่าง) ,มีวิธีที่ดีกว่าบอกได้ขอบคุณ(ม๊ากกๆ) ,จัดหน้า ใส่สีไม่สม่ำเสมอขออภัย
แนะนำติชมเพิ่มเติมเชิญตามอัธยาศัย ภาษาวัยรุ่นอะไรก็ได้อ่านออก