php中pdf頁面製作方法

來源:互聯網
上載者:User

FPDF即“Free PDF”,FPDF類庫提供了基本的PDF建立功能,其原始碼和使用權是免費的。本文主要和大家分享php中pdf頁面製作方法,希望能協助到大家。

PDF格式文檔優勢

  1. 通用:PDF文檔在UNIX和Windows系統均可正常使用。

  2. 安全:PDF文檔可設定為唯讀模式,並且可以添加密碼等保護措施。

  3. 美觀:PDF文檔可以很大程度上相容中文編碼,並且保留當前頁面排版。

  4. 精巧:大多數情況下,產生PDF文檔會減小檔案體積。

FPDF類庫下載

  • FPDF類庫下載地址: http://www.fpdf.org/

  • FPDF類庫中文外掛程式下載地址: http://www.fpdf.org/download/chinese.zip

FPDF類庫配置

  1. 下載FPDF檔案。

  2. 將下載壓縮檔解壓到項目根目錄下。

  3. 在項目中引用FPDF類庫(如下代碼)。

<?phpdefine('FPDF_FONTPATH','font/');require_once('fpdf/fpdf.php');?>

FPDF類庫的具體操作

建立對象

new FPDF([string page-orientation [, string measure-unit [, string page-format]]]);/*      page-orientation:選擇性參數,表示PDF文檔為橫向或縱向,預設 P        取值:P:縱向 L:橫向    measure-unit:選擇性參數,表示計量單元,預設 mm        取值:pt:點     mm:毫米       cm:厘米       in:英寸    page-format:選擇性參數,紙張類型,預設 A4        取值: A4、A5、Letter等*/

添加新頁

void AddPage([string page-orientation]);/*      page-orientation:選擇性參數,表示PDF文檔為橫向或縱向,預設 P        取值:P:縱向 L:橫向*/

設定字型

void SetFont(string font [, string style [, float size]]);/*    font:表示字型;    style:選擇性參數,表示樣式,預設為普通樣式;        取值:B:粗體     I:斜體        U:底線    size:選擇性參數,表示字型大小,預設為12pt;*/

增加儲存格

void Cell(float width, float height, string txt, int border, int ln, string align, boolean fill, string link);/*    width:增加儲存格寬度。    height:增加儲存格高度。    str:放置在儲存格中的文本。    border:儲存格邊框。    ln:換行高度,預設為0,即換一行。    align:對齊,預設居左,R時居右,C時置中。    fill:是否顏色填充,預設false。    link:添加連結,預設無連結.    * Cell()函數是FPDF中輸出文字的主要方式之一。*/

輸出文檔

String Output([string name [, string dest]]);/*    name:選擇性參數,表示要儲存的檔案名稱。    dest:選擇性參數,操作內容。        取值:        I:將PDF文檔直接在瀏覽器中顯示。        D:下載PDF文檔。        F:儲存為本地檔案。        S:返回一個字串值。*/

插入圖片

void Image(string file, float x, float y float width, float height);/*    file:圖片路徑。    x:圖片位置的橫座標。    y:圖片位置的縱座標。    width:圖片寬度。    height:圖片高度。*/

解決中文亂碼問題

  1. 下載FPDF中的中文外掛程式chinese.php檔案,建立PDF_Chinese()對象。

  2. 將頁面編碼設定為GB2312或使用iconv()函數改變字串編碼方式。

/*範例程式碼如下*/<?php    require_once('fpdf/chinese.php');    $pdf=new PDF_Chinese('P','mm','A4');    $pdf -> AddGBFont ('GB',iconv("UTF-8","gbk",'微軟雅黑'));      $pdf -> AddPage ();      $pdf -> SetFont ('GB', '', 20);      $pdf -> Cell(0,0,iconv("UTF-8","gbk",'你好,世界!'));    $pdf -> Write (5, iconv("UTF-8","gbk",'你好,世界!'));      $pdf -> Output();  ?>

設定頁首和頁尾

通過重寫FPDF類中的Header() 方法和Footer() 方法設定頁首和頁尾。

<?phprequire_once('fpdf/chinese.php');class PDF extends PDF_Chinese{    function Header(){        $this->SetFont('GB','',10);        $this->Write(10,iconv("UTF-8","gbk",'這是頁首!'));        $this->Ln(20);    }    function Footer(){        $this->SetY(-15);        $this->SetFont('GB','',10);        $this->Cell(0,10,iconv("UTF-8","gbk",'這是頁尾!'));    }}$pdf=new PDF('P','mm','A4');$pdf -> AddGBFont ('GB',iconv("UTF-8","gbk",'微軟雅黑'));  $pdf -> AddPage ();  $pdf -> SetFont ('GB', '', 20);  $pdf -> Cell(0,0,iconv("UTF-8","gbk",'你好,世界!'));$pdf -> Write (5, iconv("UTF-8","gbk",'你好,世界!'));  $pdf -> Output();  ?>

設定/擷取某元素在頁面中的位置

void setX(float x);    //設定某元素在頁面的X座標,單位為mm。如x為負數,則表示自頁面右端向左的距離。void setY(float y [, boolean resetX]);    //設定某元素在頁面的Y座標,單位為mm。如y為負數,則表示自頁面底部向上的距離。若選擇性參數resetX為真則重設X座標。void setXY(float x, float y);    //設定某元素在頁面的(X,Y)座標,規則如上,定位Y時不重設X座標。float getX();      //獲得某元素當前X座標。float getY();       //獲得某元素當前Y座標。

輸出字串

void Write(float h, string txt [, mixed link]);/*    h:定義字串的行高。    txt:指定輸出字串。    link:選擇性參數,設定連結。*/

換行

void Ln([float h]);//h:設定行高,預設值為最後輸出的行的高度。

本文輸出

void MultiCell(float width, float height, string txt, int border, string align, boolean fill);/*    width:儲存格寬度。    height:儲存格高度。    txt:放置在儲存格中的文本。    border:儲存格邊框,預設為0。    align:對齊。預設居左,R=居右,C=置中。    fill:是否顏色填充。預設false。    * MultiCell()函數是FPDF輸出大段文字的主要方法,可自動換行。*/

繪製表格

利用Cell()函數迴圈建立儲存格,最終組成表格。

<?phprequire_once('fpdf/chinese.php');$pdf = new PDF_Chinese('P','mm','A4');$pdf -> AddGBFont();$pdf -> AddPage();$pdf -> SetFont('GB','',14);$header = array('姓名','年齡','性別','工資');$data = array();$data[0] = array('小張','24','男','5,000.00');$data[1] = array('小王','22','女','4,000.00');$width = array(40,40,40,40);for($i=0;$i<count($header);$i++){    $pdf -> Cell($width[$i],6,iconv("UTF-8","gbk",$header[$i]),1);}$pdf -> Ln();foreach($data as $row){    $pdf -> Cell($width[0],6,iconv("UTF-8","gbk",$row[0]),1);    $pdf -> Cell($width[1],6,iconv("UTF-8","gbk",$row[1]),1);    $pdf -> Cell($width[2],6,iconv("UTF-8","gbk",$row[2]),1);    $pdf -> Cell($width[3],6,iconv("UTF-8","gbk",$row[3]),1);    $pdf -> Ln();}$pdf -> Output();?>

注意事項

  • 部分資料中含有FPDF類庫的Open()方法,但實際上類庫中並不包含。使用Open()方法將會造成錯誤。

  • 使用FPDF類產生PDF檔案時,編碼格式應設定為GB2312(或GB相關編碼),否則即使繼承了PDF_Chinese類依然是亂碼。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.