用 php 製作中文 PDF 檔 |
|
AB
高階會員 ![]() ![]() ![]() ![]() 發表:166 回覆:262 積分:125 註冊:2003-08-21 發送簡訊給我 |
14.7. 用 php 製作中文 PDF 檔 http://freebsd.sinica.edu.tw/zh-tut/php-pdf.html
14.7. 用 php 製作中文 PDF 檔
Contributed by Tim (tim@dnes.mlc.edu.tw)
Last Update: 2003年 4月20日 周日 15時59分41秒 CST
php 目前可以使用 PDFlib 來建立不內嵌字型的 PDF 檔, 在 pdf_findfont 的部分要給對字型就可以了。
$font = pdf_findfont($pdf, 'MSung-Light', 'ETen-B5-H', 0);
以下是完整範例,記得要先在該目錄底下建立 hello.pdf 並且將權限改成 666。
<?php
echo '<meta http-equiv="Content-Type" content="text/html; charset=big5">';
//create file
$fp = fopen('hello.pdf', 'w');
if(!$fp)
{
echo "Error: could not create the PDF file";
exit;
} // start the pdf document
$pdf = pdf_open($fp);
pdf_set_info($pdf, "Creator", "pdftest.php");
pdf_set_info($pdf, "Author", "Shen Chun-Hsing");
pdf_set_info($pdf, "Title", "Hello World (PHP)"); // US letter is 11" x 8.5" and there are approximately 72 points per inch
pdf_begin_page($pdf, 8.5*72, 11*72/2);
pdf_add_outline($pdf, 'Page 1'); // 取得字型
$Efont = pdf_findfont($pdf, 'Times-Roman', 'host', 0);
$Cfont = pdf_findfont($pdf, 'MSung-Light', 'ETen-B5-H', 0); // write text
pdf_setfont($pdf, $Efont, 24);
pdf_set_text_pos($pdf, 50, 700/2);
pdf_show($pdf,'Hello world!');
pdf_continue_text($pdf,'(says PHP)');
pdf_setfont($pdf, $Cfont, 24);
pdf_continue_text($pdf,'細明體中文字測試'); // end the document
pdf_end_page($pdf);
pdf_close($pdf);
fclose($fp); // display a link to download
echo "測試檔PDF";
echo "";
show_source( basename( getenv("SCRIPT_FILENAME") ) );
?>
在 pdf_findfont 的部分選擇 ('MSung-Light', 'ETen-B5-H') 這樣子的 CID-Keyed font 就可以使用明體了, 第一個欄位還可以換成 MHei-Medium 來使用楷體, 不過在目前的支援度下,所能看到的不管設定明體或是楷體, 都只會有明體而以, 這必須是 PDF 瀏覽器支援設定的字體有其相對應的字體才行, 而第二個欄位 CMap 基本上建議使用 ETen-B5-H 才能使用倚天外字。
可以用的英文字型如下: Courier Courier-Bold Courier-Oblique Courier-BoldOblique Helvetica Helvetica-Bold Helvetica-Oblique Helvetica-BoldOblique Symbol Times-Roman Times-Bold Times-Italic Times-BoldItalic ZapfDingbats。
可以用的中文 CMap 如下: B5pc-H B5pc-V HKscs-B5-H HKscs-B5-V ETen-B5-H ETen-B5-V ETenms-B5-H ETenms-B5-V CNS-EUC-H CNS-EUC-V UniCNS-UCS2-H UniCNS-UCS2-V。
Figure 14-2. php-pdf snapshot
而 pdf_add_bookmark 有人說有中文的問題,可是在筆者的測試之下, Big5 編碼的 bookmark 在 Acroread 5 可以正常看到,或是利用 iconv 轉成 UTF-16 也是正常的,所以如果您看到的 bookmark 有中文問題, 可以利用 iconv("Big5", "UTF-16", "中文字") 來試試看。
WWW: http://www.PDFlib.com/
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |