Home>Article>Backend Development> How to convert html to image in php

How to convert html to image in php

藏色散人
藏色散人 Original
2020-08-11 09:39:01 4075browse

php How to convert html to images: First download the mPDF and imagick class libraries; then create a "html2pdf" method and set the size and display mode of pdf; then use commands such as "yum install -y ImageMagick" Just convert pdf to png image.

How to convert html to image in php

Recommended: "PHP Video Tutorial"

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 (it is recommended to use 6.0 although it is too big) Click) This is a class library that can be directly downloaded and uploaded to the server. There are many things in it. Create a new html2pdf folder and introduce

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(''); //设置pdf显示方式 $mpdf->SetDisplayMode('fullpage'); //删除pdf第一页(由于设置pdf尺寸导致多出了一页) $mpdf->DeletePages(1,1); $mpdf->WriteHTML($html); $pdf_name = md5(time()).'.pdf'; $mpdf->Output($PATH.$pdf_name); return $pdf_name; }

You can basically use this function To 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, pay attention to running

yum list |grep imagick

According to the query results Choose to install mine according to your server version 5.6.3

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 to png.

/* 名称 pdf转换为png图片 功能 将pdf图片转换为png图片 参数数量 2个 1.必须 html代码 可以用file_get_contenth获取 2.必须 生成pdf存放位置路径 实例 code($html,'img/1.pdf'); * */ function pdf2png($PDF, $PNG, $w=50, $h=50){ if(!extension_loaded('imagick')){ 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 the simple page is basically completed. The image size is about 1M. It's too small to be clear.

The above is the detailed content of How to convert html to image in php. 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