我有一个页面,其中包含一个名为预览的表单和按钮 . 我需要一种方法来生成预览,将生成的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 回答
您需要重新考虑获取HTML并生成其图像文件的要求 .
您可以使用适当的CSS轻松调整表单中的维度和所有元素 . 这是我要走的路线 .
生成图像似乎有点矫枉过正 .
为了使用Imagick,你需要设置图片的SIZE,而不仅仅是解决方案:你能先尝试这样的事情,看看会发生什么?