Thursday, April 7, 2011

再來認識 FPDF

剛認識 Zend_Pdf 要做的事情完全相同,連續放了幾天假之後的愧疚驅動了我搜尋 Zend_Pdf 的問題,大致上就是 include 新的字型之外還有以下一些方法:
  • drawText 第一個參數先 utf8_decode
  • 所用過的字型如下:
fontWithPath('../path/msjh.ttf', Zend_Pdf_Font::EMBED_DONT_EMBED);
fontWithPath('c:/windows/fonts/SIMFANG.TTF', Zend_Pdf_Font::EMBED_DONT_EMBED);
fontWithPath('c:/windows/fonts/kaiu.ttf', Zend_Pdf_Font::EMBED_DONT_EMBED);

但是呢~沒有一個解決問題的,也詢問了單位同仁,回應竟然是【建議放棄 Zend_Pdf】這傢伙,改用【FPDF】。這篇文章原則上也是將 FPDF 那入 Zend Framework 專案之中,過程中也不斷遇到問題,所幸是能夠解決的 case,因此紀錄一下這個過程。

需求

除了 Zend Framework 專案環境之外,請額外準備 fpdf.php, chinese.php, chinese-unicode.php 放在與欲撰寫的檔案相同目錄即可。

利用 PDF 報表工具

class BillPDF
{
    protected $_pdf;
    protected $_name;
 public function init(){
  $this->_pdf = new PDF_Unicode();
  $this->_pdf->Open(); 
  $this->_name = 'filename';
  // 報表資訊
  $this->_pdf->SetTitle('your_docs_title');
  $this->_pdf->SetSubject('your_docs_subject');
  $this->_pdf->SetAuthor('your_big_name');
  // 報表配置
  $this->_pdf->AddPage();
  $this->_pdf->SetFillColor(109, 207, 246);
  $this->_pdf->SetMargins(19.1, 25.4, 19.1); // MS Word 版面配置為中等
  $this->_pdf->AddUniCNShwFont('uni'); 
  // 製作
  $this->_pdf->Ln();
  $this->_pdf->SetFont('uni', 'B', 16); 
  $this->_pdf->Cell(0, 6, '中文字處理 Hello World!', 0, 1, 'C', 0);
    $this->_pdf->Output($this->_name.'.pdf', 'F');
 }

資源以及使用 PDF 工具
注意

Zend_View 要關閉,不然 Output 的步驟會出錯。
$this->view->layout()->disableLayout();
$this->_helper->viewRenderer->setNoRender(true);

Reference

[1.] FPDF API http://www.fpdf.org/en/doc/index.php

No comments:

Post a Comment