我想根据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();
}
提前致谢
答案 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
看好。您不太可能完全模仿屏幕,但它应该很容易呈现您需要连贯打印所需的信息。