2012-02-01 91 views
1

我有一個網頁,編碼在codeigniter框架,它列出了所有可用的證書。然後,我可以通過單擊它的名稱或通過選中複選框來打印證書,如果用戶想要打印多個證書。Codeigniter - 如何將HTML頁面轉換爲圖像?

目前我所做的只是查看證書的html,用戶必須右鍵單擊瀏覽器並單擊打印。對於1頁證書而言,這很好。

但是,當我有2個或更多的證書,證書堆疊不完美。據我所知,我無法將html頁面設置爲A4大小的打印件。

Codeigniter有一個圖像處理庫。 http://codeigniter.com/user_guide/libraries/image_lib.html

但找不到我想要的。

有沒有辦法將這些html頁面轉換爲圖像,我可以稍後打印這些圖像?或者我應該嘗試其他圖書館?

回答

2

我會使用DOMPDF來創建一個PDF文檔。您可以像平常一樣生成它們,然後使用加載視圖函數的第三個參數來返回PDF處理的html。

在你的控制器中這樣的東西;

$this->load->helper('pdf'); 
    $html = $this->load->view('certificate_view', array(), TRUE); 
    $attachment_location = $_SERVER["DOCUMENT_ROOT"] . '/certs/'.$title.'.pdf'; 
    pdf_create($html, $title, $stream=FALSE, $orientation='portrait'); 
    // send open/save pdf dialog to user 
    header('Cache-Control: public'); // needed for i.e. 
    header('Content-Type: application/pdf'); 
    header('Content-Disposition: attachment; filename="'.$title.'"'); 
    readfile($attachment_location); 
    exit; 

Codeigniter DOMPDF庫是here

+0

目前所有選擇的證書都會被渲染成一個長的html頁面。如果我打印500張證書,這不是資源密集型嗎?或者我應該循環處理輸出pdf到一個文件夾中,然後每次提取1個pdf以便打印? – LithiumRX 2012-02-01 09:08:11

+0

我會做一個循環中的單個證書視圖,最後一個元素是一個具有分頁規則的div,以構建html – Rooneyl 2012-02-01 09:32:57

+0

我想出的解決方案是使用tcpdf。似乎它可以承受大量的證書。 – LithiumRX 2012-04-05 08:11:02

0

您可以使用這個簡單的tutorial將html轉換爲圖像。它使用了imagick而沒有gd庫。

+2

我已經建議你在答案上顯示一些代碼示例,看起來我並不是唯一的例子。我會開始投票你的答案,就像這一個。 – DontVoteMeDown 2013-07-01 14:30:02