2012-11-06 39 views
2

我想創建一個基於一個視圖的pdf,由Codeigniter生成。然而,這個視圖有很多風格元素和與它們相關的媒體查詢,所以呈現的pdf完全不符合所需的最終文檔。Codeigniter - 視圖快照 - 生成PDF

實現這個目標的最佳方式是什麼?現在我正在使用mPDF。無論如何要拍攝視圖的快照,然後用它生成pdf,所以關聯的樣式在文檔上正確呈現?

現在我的代碼看起來像這樣

public function generatePDF() 
    { 
     $this->session_expire(); 
    $this->load->helper('url'); 
    $user_id=$this->session->userdata('user_id'); 
    $this->user_model=$this->db_interface->db_get_user($user_id); 
    // $this->load->helper('url'); 


     //echo('error aki <br />'); 
     $data['user'] = $this->user_model; 
     $data['objective'] = $this->db_interface->db_get_objectives($this->user_model->get_id()); 
     $data['list_work'] = $this->db_interface->db_get_list_work_experience($this->user_model->get_id()); 
     $data['list_education'] = $this->db_interface->db_get_list_education($this->user_model->get_id()); 
     $data['list_skills'] = $this->db_interface->db_get_skills($this->user_model->get_id()); 
     $data['list_personal'] = $this->db_interface->db_get_personal_skills($this->user_model->get_id()); 
     $data['list_links'] = $this->db_interface->get_user_links($this->user_model->get_id()); 


     $html = $this->load->view('display_user',$data,TRUE); 
     //$html = $this->load->view('display_user',$data,TRUE); 
     // $this->load->view('display_user', $html); 
     $this->mpdf->WriteHTML($html); 
     $this->mpdf->Output(); 

    } 

在此先感謝

+0

如何將渲染視圖緩存在文件中,然後讀取文件內容? – manix

+0

關於如何完成該任務的任何想法? –

+0

當然,看看[緩存](http://codeigniter.com/user_guide/general/caching.html)文檔。這種方法將生成一個文件到'應用程序/緩存'文件夾 – manix

回答

3

簡短的回答:那種。

長答案:你有2個選項。你可以a)截圖(見Website screenshots using PHP);或b)您可以創建一個自定義樣式表進行打印。

後者可能會容易得多。有什麼您使用可只要CSS而言做庫,所以讀了限制:http://www.mpdf1.com/mpdf/enhancements

最好的辦法可能是創建屏幕和打印單獨的樣式表:

<link rel="stylesheet" href="screen.css" type="text/css" media="screen"> 

觀看,和

<link rel="stylesheet" href="print.css" type="text/css" media="print"> 

用於印刷。

風格print.css。您不可能精確地模仿屏幕,但應該很容易呈現連貫打印所需的信息。

+0

與html2canvas取得了一些進展,但它仍然錯過了一些元素轉換。 如何將它轉換爲PostScript?這是可以實現的嗎?它有意義嗎?我正在考慮其他替代品,如乳膠。 –

+0

轉換什麼後記?如果你有缺少元素的屏幕截圖,將其轉換爲PS不會讓它們出現。乳膠是一個蠕蟲的整個其他球:http://stackoverflow.com/q/8577244/183254但我想它可能工作。看起來像一大堆工作...也許值得嘗試砍掉html2canvas以獲得最後的元素。 – stormdrain

+0

我在談論如何將HTML轉換爲PS。我不知道這是否可能。無論如何,你給了我最好的答案,所以我想。謝謝! –