Codeigniter - 视图快照 - 生成PDF

时间:2012-11-06 14:39:41

标签: codeigniter pdf codeigniter-2

我想根据Codeigniter生成的一个视图创建一个pdf。但是,这个视图有很多样式元素,以及与它们相关的媒体查询,因此渲染的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();

    }

提前致谢

1 个答案:

答案 0 :(得分:3)

简短的回答:那种。

答案很长:你有两个选择。你可以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。您不太可能完全模仿屏幕,但它应该很容易呈现您需要连贯打印所需的信息。