php中网页转化为图片

方式:HTML->PDF->JPG

第一步:HTML->PDF

利用mpdf将html转成pdf,基本解决了中文(以及日语、韩语及东南亚和全球语言)乱码的问题,在Windows/Linux开发环境下测试可用,不需要安装别的组件支持,这里是官方下载地址是:'http://www.mpdf1.com/',已经更新到6.0版,不过我不建议下载6.0版本,原因有两个:相比其他版本要大很多;再就是我第一次用的就是这个版本,里面报各种错误(这才是主要原因),后来换成5.7就没问题了。代码如下:

include('MPDF57/mpdf.php');
$mpdf=new mPDF('UTF-8','A4','','',0,0,0,0);//设置编码、页面大小,以及在pdf上面的顶点坐标
$mpdf->useAdobeCJK = true;
$mpdf->SetAutoFont(AUTOFONT_ALL);
$mpdf->SetDisplayMode('fullpage');
//$mpdf->watermark_font = 'GB';
// $mpdf->SetWatermarkText('中国水印',0.1);
$url = 'index.html';
$strContent =file_get_contents($url);
//print_r($strContent);die;
$mpdf->showWatermarkText = true;
$mpdf->SetAutoFont();
//$mpdf->SetHTMLHeader( '头部' );
//$mpdf->SetHTMLFooter( '底部' );
$mpdf->WriteHTML($strContent);
$mpdf->Output('123.pdf');
//$mpdf->Output('tmp.pdf',true);
//$mpdf->Output('tmp.pdf','d');
//$mpdf->Output();

第二步:PDF->JPG

这一步比较麻烦,麻烦在imagick系统环境的安装和php动态链接库,动态链接库必须和操作系统版本、php版本一致,否则无法使用。

(一)本地windows开发环境,安装过程:

1、安装imagick扩展

打开phpinfo();查看php version,Compiler ,Architecture,这三个属性,如下图
[图片上传失败...(image-fc6f94-1515423747906)]

分别是5.5.12 MSVC11 x86,根据这三个值去下载相应的imagick,下载地址'https://pecl.php.net/package/imagick',从最新版本的DLL版本选择

[图片上传失败...(image-f74b4b-1515423747906)]

然后一个新的窗口将加载,在这个页面滚动到列表,点击你的PHP版本的正确结构的正确版本(XAMPP不是你的操作系统)和线程安全的情况下,它在你的分布使(指phpinfo知道是否你的PHP配置采用线程安全的或不):

[图片上传失败...(image-a3f7d4-1515423747906)]

这将启动一个zip文件下载'php_imagick----.zip'。 提取文件中的php_imagick.dll文件复制PHP_imagick.dll在文件粘贴php/ext在你的XAMPP安装路径文件夹。然后在php.ini中添加'extension=php_imagick.dll'.

然后重启,打开phpinfo()可以找到imagick,就说明成功了,但这个时候还不能用,你会看到ImageMagick number of supported formats 为0,ImageMagick supported formats no value,还要安装ImageMagick ,phpinfo里面会写出要安装几版本的,如下图

[图片上传失败...(image-8c84ed-1515423747906)]

然后去下载这个ImageMagick 6.9.1-2 Q16 x86 版本的安装。下载地址'http://www.imagemagick.org/download/',提取文件中的所有的dll文件(除了ImageMagickObject.dll),将约146的文件(前缀核心_ 和IM_MOD_)然后粘贴复制文件到Apache /箱文件夹XAMPP(属于\xampp\apache\bin)

现在启动Apache服务(或者重新启动它的情况下,它已经运行)和去phpinfo再一次.ImageMagick supported formats不是空的了,这个时候就算安全成功。现在你应该看到imagick作为扩展加载:[图片上传失败...(image-174760-1515423747906)]

(二)Linux安装ImageMagick(该步仅摘抄,未试验)

1、依次运行以下命令

yum install ImageMagick
yum install ImageMagick-devel
yum install php-pear [for PECL]
安装php-pear是为了使用pecl 中的 phpize
yum -y install php-devel

2、安装C编译器

yum install gcc
如果装不了gcc就用这个命令:
yum install gcc gcc-c++ autoconf automake

3、 安装imagick

pecl install imagick

4、加载imagick到php

在/etc/php.ini 加上extension=imagick.so

5、 重启service httpd restart

6、 使用 phpinfo() 或运行 php -m | grep imagick 来查看是否安装成功

好了,环境安装完了,下面就是代码实现了(用下面的代码也可以测试环境是否真的安装成功,windows环境下php_imagick扩展已经有了但还是报imagick错误,弄好久也没解决我也很绝望)

代码

简单一点的代码如下:

$pdfpath="yourfile.pdf";
$im = new Imagick();
$im->readImage($pdfpath);
$im -> resetIterator();
$imgs = $im->appendImages(true);
$imgs->setImageFormat( "jpg" );
$img_name ="123.jpg";
$imgs->writeImage($img_name);
$imgs->clear();
$imgs->destroy();
$im->clear();
$im->destroy();

封装好的代码如下:

/**
 * PDF2PNG
 * @param $pdf  待处理的PDF文件
 * @param $path 待保存的图片路径
 * @param $page 待导出的页面 -1为全部 0为第一页 1为第二页
 * @return      保存好的图片路径和文件名
 */
function pdf2png($pdf,$path,$page=-1)
{
    if(!extension_loaded('imagick'))
    {
        return false;
    }
    if(!file_exists($pdf))
    {
        return false;
    }
    
    $im = new Imagick();
    $im->setResolution(350,429);//设置图像分辨率
    $im->setCompressionQuality(70);//设置默认的压缩质量  
    if($page==-1)
        $im->readImage($pdf);
    else
        $im->readImage($pdf.'['.$page.']');
    foreach ($im as $Key => $Var)
    {
        $Var->setImageFormat('jpg');
        $filename = $path.'/'. md5($Key.time()).'.jpg';
        if($Var->writeImage($filename) == true)
        {
            $Return[] = $filename;
        }
    }
    return $Return;
}
$path='E:\xampp\htdocs\test\images';
$scount=count($s);

for($i=0;$i<$scount;$i++)
{
    echo '
Page'.($i+1).'
'; }

如果报Fatal error: in 文件名,可以在php_error_log日志文件查看错误日志,如果出现下面的报错,那就需要安装GhostScript了

PHP Fatal error:  Uncaught exception 'ImagickException' with message 'PostscriptDelegateFailed `test.pdf': No such file or directory'
linux安装方法如下:
yum install ghostscript

你可能感兴趣的:(php中网页转化为图片)