Câu hỏi

26/04/2013 21:36
Anh chị 3C làm ơn cho em hỏi về cách tạo file PDF tiếng việt với PHP với được không ạ?
Danh sách câu trả lời (1)

FPDF không (chưa?) hỗ trợ Unicode, cho nên không thể dùng trực tiếp font chữ VUCamThach. Trong bài này chọn bảng mã VISCII. Các trình tự các bước sau về nguyên tắc cũng sẽ áp dụng được cho các bảng mã tiếng Việt khác như TCVN, VPS hay VNI.
Việc thêm một font cần phải tiến hành các bước sau đây:
- Tạo file .afm (Adobe Font Metrics ?) chứa các thông tin đặc tính "metric" của font chữ,
- Tạo file định nghĩa font dạng script PHP (.php)
- Khai báo font để sử dụng nó trong script PHP
Đối với font chữ dạng Type1 thì bước thứ nhất không cần thiết vì các file .afm đã có sẵn. Dùng công cụ ttf2pt1 để chuyển đổi font Truetype sang định dạng Type1 binary (.pfb) và đồng thời tạo ra file .afm.
# ttf2pt1 -b -L viscii.map vucamtha.ttf
Trong đó file viscii.map chứa bảng mã đối chiếu giữa Unicode và VISCII, có dạng:
...!A3 U+1EB7 abrevedotbelow!A4 U+1EA5 acircumflexacute!A5 U+1EA7 acircumflexgrave!A6 U+1EA9 acircumflexhookabove!A7 U+1EAD acircumflexdotbelow!A8 U+1EBD etilde...
Khi thực hiện lệnh trên sẽ thấy có một vài warning, đừng chú ý đến các thông tin đó vì chúng không quan trọng. Kết quả sẽ có hai file: vucamtha.pfb và vucamtha.afm.
Bước tiếp đến, tạo file định nghĩa font, tạm gọi tên là make_vucamtha.php có nội dung như sau:
Chạy script make_vucamtha.php thông qua trình duyệt, bỏ qua các thông tin xuất hiện, sẽ thấy có hai file mới được tạo ra là vucamtha.php và vucamtha.z. File thứ hai chẳng qua chỉ là dạng nén của file vucamtha.pfb. Việc tạo file kết thúc ở đây.
Trong chương trình muốn sử dụng font chữ vừa tạo, chỉ cần khai báo như sau:
Open(); $pdf->SetMargins(25.0,20.0,20.0);$pdf->AddPage(); $pdf->AddFont('VUCamThach','','vucamtha.php'); $pdf->SetFont('VUCamThach','',36);$pdf->Cell(0,12,'ThØ Tiªng Vi®t VISCII VUCamThach',0,1,'C');$pdf->Output();?>
Voilà! bạn đã có thể tạo ra các file PDF tiếng Việt với FPDF rồi.
Các bước trình bày trên đây là hoàn toàn áp dụng được cho bảng mã CP1258. Chỉ việc thay thế file viscii.map bằng file cp1258.map. Đương nhiên khi đó thì các xâu chuỗi truyền cho hàm $pdf->Cell() phải là ở bảng mã CP1258.
chúc bạn thành công!
Việc thêm một font cần phải tiến hành các bước sau đây:
- Tạo file .afm (Adobe Font Metrics ?) chứa các thông tin đặc tính "metric" của font chữ,
- Tạo file định nghĩa font dạng script PHP (.php)
- Khai báo font để sử dụng nó trong script PHP
Đối với font chữ dạng Type1 thì bước thứ nhất không cần thiết vì các file .afm đã có sẵn. Dùng công cụ ttf2pt1 để chuyển đổi font Truetype sang định dạng Type1 binary (.pfb) và đồng thời tạo ra file .afm.
# ttf2pt1 -b -L viscii.map vucamtha.ttf
Trong đó file viscii.map chứa bảng mã đối chiếu giữa Unicode và VISCII, có dạng:
...!A3 U+1EB7 abrevedotbelow!A4 U+1EA5 acircumflexacute!A5 U+1EA7 acircumflexgrave!A6 U+1EA9 acircumflexhookabove!A7 U+1EAD acircumflexdotbelow!A8 U+1EBD etilde...
Khi thực hiện lệnh trên sẽ thấy có một vài warning, đừng chú ý đến các thông tin đó vì chúng không quan trọng. Kết quả sẽ có hai file: vucamtha.pfb và vucamtha.afm.
Bước tiếp đến, tạo file định nghĩa font, tạm gọi tên là make_vucamtha.php có nội dung như sau:
Chạy script make_vucamtha.php thông qua trình duyệt, bỏ qua các thông tin xuất hiện, sẽ thấy có hai file mới được tạo ra là vucamtha.php và vucamtha.z. File thứ hai chẳng qua chỉ là dạng nén của file vucamtha.pfb. Việc tạo file kết thúc ở đây.
Trong chương trình muốn sử dụng font chữ vừa tạo, chỉ cần khai báo như sau:
Open(); $pdf->SetMargins(25.0,20.0,20.0);$pdf->AddPage(); $pdf->AddFont('VUCamThach','','vucamtha.php'); $pdf->SetFont('VUCamThach','',36);$pdf->Cell(0,12,'ThØ Tiªng Vi®t VISCII VUCamThach',0,1,'C');$pdf->Output();?>
Voilà! bạn đã có thể tạo ra các file PDF tiếng Việt với FPDF rồi.
Các bước trình bày trên đây là hoàn toàn áp dụng được cho bảng mã CP1258. Chỉ việc thay thế file viscii.map bằng file cp1258.map. Đương nhiên khi đó thì các xâu chuỗi truyền cho hàm $pdf->Cell() phải là ở bảng mã CP1258.
chúc bạn thành công!
Trả lời câu hỏi
Câu hỏi lĩnh vực Lập trình
Rao vặt Siêu Vip