2012-02-01 80 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