将Html渲染为图像

时间:2012-12-13 17:04:44

标签: html image yii mpdf

我有一个页面,其中包含一个名为preview的表单和按钮。我需要一种方法来生成预览,将生成的HTML转换为图像。

单击预览按钮会启动对控制器操作的ajax调用(我正在使用Yii Framework),因此我从表单中收集了所有数据并使用填充的数据生成预览。

我需要将生成的HTML转换为图像;通过这种方式,我可以根据我所需的尺寸重新调整大小。

我已经尝试动态生成.pdf然后从pdf生成图像,并使用mpdf扩展和imagick。但是imagick要求pdf是一个现有文件,而我更喜欢用mpdf生成一个.pdf字符串(我不能为每次点击预览按钮生成和删除一个pdf)。

从html或“即时”生成的pdf字符串生成图像有什么好方法?

这是我用过的代码,但是它从imagick返回一个错误,说没有维度的图片:

    $html2pdf = Yii::app()->ePdf->mpdf('','A4');        
    $html2pdf->WriteHTML($this->render('preview', array("data" => $data, "imageProvider" => $arrayImage),true));        
    $content_PDF = $html2pdf->Output('', EYiiPdf::OUTPUT_TO_STRING);        
    $im = new Imagick();         
    $im->readImageBlob( $content_pdf );         
    //$im->setIteratorIndex(0);
    $im->setResolution( 800, 600 );
    $im->setImageFormat( "jpeg" );
    header( "Content-Type: image/jpeg" );        
    echo $im->getImage();

2 个答案:

答案 0 :(得分:0)

您需要重新考虑获取HTML并生成图像文件的要求。

  

我需要将生成的HTML转换为图像;通过这种方式,我能够   重新调整我所需的尺寸。

您可以使用适当的CSS轻松调整表单中的维度和所有元素。这是我要采取的路线。

生成图像似乎有点矫枉过正。

答案 1 :(得分:0)

为了使用Imagick,您需要设置图片的SIZE,而不仅仅是解决方案: 你能先尝试这样的事情看看会发生什么吗?

$thumb = new imagick("/path/".$filename);
$thumb->setImageFormat( "png" );
$thumb->thumbnailImage( 128, 128);