Home >Backend Development >PHP Tutorial >PHP method to convert html into images

PHP method to convert html into images

墨辰丷
墨辰丷Original
2018-05-22 14:55:062644browse

This article mainly introduces the method of converting html to images in php. Interested friends can refer to it. I hope it will be helpful to everyone.

Parse and convert the compiled html into images on the server side.

Since html is generally parsed by the client browser, the server cannot parse html code directly. So we need to use php class libraries and extensions to complete this requirement.

The file conversion process is html —> pdf —>png.

The class library you need to use is mPDF, imagick

pdf. The official download address is: http://www.mpdf1.com/mpdf/index.php (recommended in 6.0 Although it is a bit big) This is a class library that can be downloaded and uploaded directly to the server. There are many things in it. Create a new html2pdf folder and introduce it


include('./html2pdf/mpdf');


A whole function


/*
名称  html转换为pdf图片
功能  将html页面转换为pdf图片(部分css样式无法识别)
参数数量 2个
1.必须 html代码 可以用file_get_contenth获取
2.必须 生成pdf存放位置路径
3.非必须 pdf宽
4.非必须 pdf高
返回值 图片名称
实例  code($html,'img/1.pdf');
 * */
function html2pdf($html, $PATH, $w=414 ,$h=736){
 //设置中文字体(很重要 它会影响到第二步中 图片生成)
$mpdf=new mPDF('utf-8');
$mpdf->autoScriptToLang = true;
$mpdf->autoLangToFont = true;
//设置pdf的尺寸
$mpdf->WriteHTML(&#39;<pagebreak sheet-size="&#39;.$w.&#39;mm &#39;.$h.&#39;mm" />&#39;);


//设置pdf显示方式
$mpdf->SetDisplayMode(&#39;fullpage&#39;);

//删除pdf第一页(由于设置pdf尺寸导致多出了一页)
$mpdf->DeletePages(1,1);

$mpdf->WriteHTML($html);

$pdf_name = md5(time()).&#39;.pdf&#39;;

$mpdf->Output($PATH.$pdf_name);

return $pdf_name;

}


Using this function can basically solve the problem of HTML to PDF. It should be noted that mpdf cannot effectively identify all css styles in html, such as position border-radius, etc. The position can be solved using margin. If you need to display a rounded image, you need to crop the image into a circle.

The next step is to convert pdf to png images. This step requires installing the ImageMagick component on the server and running the command once


yum install -y ImageMagick
yum install -y ImageMagick-devel
yum install -y gcc
yum install -y php-pear
yum install -y ghostscript
yum install -y ghostscript-devel.x86_64


At this step, please run


yum list |grep imagick


##according to the query As a result, I chose to install 5.6.3 according to my server version


yum install -y php56w-pecl-imagick.x86_64
yum install -y php56w-pecl-imagick-devel.x86_64


Restart the server



service nginx restart
service php-fpm restart


Use phpinfo() or run php -m | grep imagick to check whether the installation is successful

Then use the function to convert the generated pdf Just make it png


/*
名称  pdf转换为png图片
功能  将pdf图片转换为png图片
参数数量 2个
1.必须 html代码 可以用file_get_contenth获取
2.必须 生成pdf存放位置路径

实例  code($html,&#39;img/1.pdf&#39;);
 * */
function pdf2png($PDF, $PNG, $w=50, $h=50){
if(!extension_loaded(&#39;imagick&#39;)){
return false;
}
if(!file_exists($PDF)){
return false;
}

$im = new Imagick();

$im->setResolution($w,$h); //设置分辨率
$im->setCompressionQuality(15);//设置图片压缩的质量

$im->readImage($PDF);
$im -> resetIterator();
$imgs = $im->appendImages(true);
$imgs->setImageFormat( "png" );
$img_name = $PNG;
$imgs->writeImage($img_name);
$imgs->clear();
$imgs->destroy();
$im->clear();
$im->destroy();

return $img_name;
}


ok. The picture of a simple page is basically completed. The image size is about 1M. It's too small to be clear.

Related recommendations:

PHPConvert images to share the source code in ico format

PHPConvert imageFor ico format source code

PHPConvert imageFormat to JPG and automatically scale to the specified size_PHP tutorial

The above is the detailed content of PHP method to convert html into images. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn