如果引用或轉貼,麻煩註明出處與本網誌連結,否則視為侵權。

2017年6月30日

如何快速將現有的PHP網頁程式輸出為PDF -- 使用mPDF程式庫

作者: Fred F.M. Wang (FW知識瑣記) 日期:20170630

如果您已經寫好一個PHP網頁程式,現在需要提供一個功能,例如一個按鈕,將此內容直接輸出PDF。這時候,可能需要另外寫一支PHP程式將內容轉輸出PDF。

筆者比較了幾個PHP程式庫後,推薦使用mPDF 程式庫,可以用最少的程式碼完成這個功能。

程式碼範例 :

  require("mpdf60/mpdf.php");
  $mpdf=new mPDF('utf-8','A4');
  ob_start(); 

  include('您的PHP網頁程式.php');

  $html = ob_get_contents();
  ob_end_clean();  
  $mpdf->WriteHTML($html); 
  $mpdf->Output();
  exit;

直接將寫好的PHP網頁程式include進來,就完成了,簡單吧。

不過看看輸出的PDF內容,您會發現無法如預期顯示您設定的字型,表格顯示也有一些問題。就這兩部分,還需要進入mPDF官網查查看相關設定 : 字型設定, 表格設定

有關字型設定,以下是我的設定範例,如何在mPDF增加與顯示Eras ITC字型

步驟 1 將Eras ITC字型檔複製到mpdf60\ttfonts 資料夾中。
步驟 2 設定  mpdf60\config_fonts.php
    2.1   $this->fontdata 中增加Eras ITC字型  
    $this->fontdata = array( 
    "eras-itc" => array(
        'R' => "ERASMD.TTF",
        'B' => "ERASBD.TTF",           
        ),

    2.2 $this->fonttrans 增加  'erasitc' => 'eras-itc',  
    $this->fonttrans = array(
    'times' => 'timesnewroman',
    'courier' => 'couriernew',
    'trebuchet' => 'trebuchetms',
    'comic' => 'comicsansms',
    'franklin' => 'franklingothicbook',
    'ocr-b' => 'ocrb',
    'ocr-b10bt' => 'ocrb',
    'damase' => 'mph2bdamase',
    'erasitc' => 'eras-itc',
);
注意 : CSS程式中font-family只有$this->fonttrans與$this->fontdata設定的字型才會顯示, 而且名稱要一樣

步驟 3 修改程式中的CSS
  
   body {
    color: black;
    font-family: erasitc, "Eras ITC","Eras Medium ITC", Arial;
   }


沒有留言:

張貼留言

歡迎提供意見, 謝謝 (註 : 留言經過版主審核通過才會發布)