zoukankan      html  css  js  c++  java
  • PHP如何生成文章预览图

    PHP如何生成文章预览图

    一、总结

    一句话总结:php的wkhtmltox扩展,php官方文档有怎么使用,或者github,或者百度,等等等等

    wkhtmltox

    1、PHP如何自动生成文章预览图?

    浏览器内核

    能不能通过某种方式调用浏览器内核来渲染网页即HTML,然后将HTML保存为图片

    2、php官方文档中有介绍wkhtmltox,说明官方是支持的而且也比较常用?

    php官方

    3、使用wkhtmltox需要安装哪些东西?

    浏览器内核
    php wkhtmltox扩展

    因为wkhtmltox是通过调用浏览器内核来渲染网页即HTML,然后将HTML保存为图片。所以要保证操作系统上有浏览器内核。

    所以需要在操作系统上安装浏览器内核,还需要的php里面安装wkhtmltox扩展。

    4、php如何成功安装使用wkhtmltox所需的插件?

    系统环境 扩展 php.ini

    1、下载安装wkhtmltox系统环境

    2、安装php-wkhtmltox扩展

    3、修改php.ini文件开启扩展

    二、Linux下PHP自动生成文章预览图,html转换成各种格式图片、PDF(转)

    转自:Linux下PHP自动生成文章预览图,html转换成各种格式图片、PDF-----转自phpboy的文章 - fendor - 博客园
    https://www.cnblogs.com/eyeSpace/p/4053667.html

    用WordPress建立博客站点,选择了一套可以显示文章缩略图的模板,几经折腾将原有模板改得面目全非,最后还是直接上线吧,不想折腾了。

    站点上线没几天,在公司做项目时,对图片做了一个放大的JS,自己博客也加上点击缩略图查看原图的功能,然后迅速的加了。

    过了几天,突发奇想,想做文章预览图,即点击缩略图查看文章预览图,也就是你们现在首页和文章列表页看到的那个功能。

    不费话了,不知道什么时候又要折腾。。。

    Linux下PHP自动生成文章预览图,最初大致的思路很简单,就是我能不能通过某种方式调用浏览器内核来渲染网页即HTML,然后将HTML保存为图片。然后开始一头扎进Google、Baidu,搜索了很长时间,得出结论,资料太少,想自己写一个C扩展,调用webkit内核。就在快要放弃的时候,在论坛里面看到wkhtmltox,然后所有的问题都在于wkhtmltox了,很庆幸的是在google code里面又看到了phpwkhtmltox,然后我笑了。

    安装软件清单:

    a.libwkhtmltox linux下的webkit内核(不依赖为图形界面)
    b.phpwkhtmltox php扩展,可调用webkit内核将网页转换成各种格式图片或者pdf
    c.font-chinese 中文字体
    d.msyh,Consolas 字体

    系统环境:Linux CentOS 6.2 64位

    1.Linux下安装libwkhtmltox

    libwkhtmltox是提取出来的可以直接复制到linux相应的目录的webkit内核,可能有人想着,要渲染网页是需要图形浏览器,但是我们的VPS一般都是没有图形界面的,其实我们只需要安装libwkhtmltox到linux即可,并不需要图形界面。

    1.1.下载libwkhtmltox

    下载地址:http://code.google.com/p/wkhtmltopdf/downloads/list?can=1&q=&colspec=Filename+Summary+Uploaded+ReleaseDate+Size+DownloadCount

    需要说明的是,libwkhtmltox现在的版本已经是0.11了,但是本人在CentOS 6.2下安装了libwkhtmltox-0.11之后,在将网页转换成图片时会出错,最终选择了0.10版本,这个版本还是相当稳定的。

    1.2.安装libwkhtmltox

    下载并解压

    1 #mkdir libwkhtmltox
    2 #cd libwkhtmltox
    4 #tar jxvf libwkhtmltox-0.10.0_rc2-amd64.tar.bz2
    5 #ll
    6 drwxr-xr-x 2 root root       59 Jan  3 20:58 examples
    7 drwxr-xr-x 3 1000 1000       22 Nov  7  2010 include
    8 drwxr-xr-x 2 1000 1000       28 Jan 31  2011 lib

    安装

    1 #cd lib
    2 #cp libwkhtmltox.so /usr/local/lib/
    3 #cd ../include
    4 #cp -R wkhtmltox /usr/local/include/

    1.3.安装phpwkhtmltox

    下载并解压

    作为php扩展安装

    1 #cd php-wkhtmltox-master
    2 #phpize
    3 #./configure
    4 #make install

    修改PHP配置文件,追加

    1 extension=phpwkhtmltox.so

    重新加载系统动态链接库(重要,否则PHP无法完成扩展phpwkhtmltox)

    1 #ldconfig

    1.4.检查PHP是否已经支持phpwkhtmltox

    1 #php -m

    如果输出的内容包括phpwkhtmltox说明扩展成功。

    1.5.小试“牛刀”,将谷歌首页保存为图片

    1.5.1.编辑测试的php脚本test_html_to_image.php

    1 <?php
    2 wkhtmltox_convert(
    3     'image',
    4     array(
    5         'out' => '/tmp/test.jpg',
    6         'in' => 'http://www.google.com.hk/'
    7     )
    8 );
    9 ?>

    1.5.2.wkhtmltox_convert($type, $globalsetting, $objectsetting)说明

    html转换为pdf示例:

    1 <?php
    2 wkhtmltox_convert('pdf',
    3     array(
    4         'out' => '/tmp/test.pdf',
    5         'imageQuality' => '95'
    6     ), // global settings
    7     array(
    8         array(
    9             'page' => 'http://www.phpboy.net/'
    10         ),
    11         array(
    12             'page' => 'http://www.baidu.com/'
    13         )
    14     )// object settings
    15 );
    16 ?>

    具体其他参数请参考:http://www.cs.au.dk/~jakobt/libwkhtmltox_0.10.0_doc/pagesettings.html#pagePdfGlobal

    1.5.2.运行PHP

    1 #php test_html_to_image.php

    到tmp目录下就可以看到我们已经将google的首页保存为test.jpg图片,是不是很有成就感,把图片下载到本地,查看图片,你可能会发现中文显示为乱码,不用担心,请看下文。

    1.6.让CentOS支持中文

    1 #yum groupinstall chinese-support

    安装完毕之后,再次运行php test_html_to_image.php,中文就不会出现乱码了,但是你可能会觉得中文显示得不好看,不用担心,请看下文。

    1.7.让linux CentOS支持微软雅黑字体

    1.7.1.下载或者从本地windows拷贝微软雅黑(注意从windows系统里面拷贝出来应该是有2个文件),并上传到linux服务器

    1.7.2.把字体文件拷贝到/usr/share/fonts/xxx,其中xxx为新增字体文件夹,如msyh

    1 #cd /usr/share/fonts/
    2 #mkdir msyh
    3 #cd msyh

    1.7.3.建立字体缓存

    1 #mkfontscale
    2 #mkfontdir
    3 #fc-cache -fv

    1.8.让Linux CentOS支持Consolas字体(技术类博客可能会发布一个示例代码,大部分wordpress技术博客都会安装SyntaxHighlighter插件,而该插件代码显示字体首选的是Consolas字体,所以为了html转换成图片时示例代码显示得好看,我们也需要让linux支持Consolas字体)

    1.8.1下载或者从本地windows拷贝Consolas(注意从windows系统里面拷贝出来应该是有4个文件),并上传到linux服务器

    1.8.2.把字体文件拷贝到/usr/share/fonts/xxx,其中xxx为新增字体文件夹,如Consolas

    1 #cd /usr/share/fonts/
    2 #mkdir Consolas
    3 #cd Consolas

    1.8.3.建立字体缓存

    1 #mkfontscale
    2 #mkfontdir
    3 #fc-cache -fv

    安装完毕之后,你可以再次运行php test_html_to_image.php,如果你填写的网址对应的网页采用微软雅黑字体,该网页转换成图片的显示效果就比较美观了。

    最后,写了一个wordpress的插件,实现在保存文章时自动生成文章缩略图,有需要的同仁可以留言留下联系方式。

    参考文档:
    1.libwkhtmltox支持的参数说明http://www.cs.au.dk/~jakobt/libwkhtmltox_0.10.0_doc/pagesettings.html#pagePdfGlobal
    2.自动生成网页截图(Screenshot)方法 http://www.phpip.com/design/skill/A62009909P/23444.html
    3.CentOS 安装中文语言包以及输入法 http://blog.chinaunix.net/uid-24352482-id-3203655.html

     
     

    三、PHP实现html生成pdf、html生成图片 利用wkhtmltox,wkhtmltopdf扩展

    需求: 将网页转为pdf或者图片,并提供下载。

    wkhtmltox项目主页:http://wkhtmltopdf.org/   支持html转pdf、image

    php扩展php-wkhtmltox项目主页: https://github.com/mreiferson/php-wkhtmltox

    1、下载安装wkhtmltox系统环境

    http://wkhtmltopdf.org/downloads.html 根据系统类型选择下载wkhtmltox:

    这里我的系统环境是CentOS 6-64bit  所以选择:Linux CentOS 6 - 64bit

    下载下来后是一个rpm包 [wkhtmltox-0.12.2_linux-centos6-amd64.rpm]。

    安装wkhtmltox:

    > rpm -ivh wkhtmltox-0.12.2_linux-centos6-amd64.rpm

    error: Failed dependencies:

         xorg-x11-fonts-75dpi is needed by wkhtmltox-1:0.12.2-1.x86_64

    # 提示需要安装75dpi  

    > yum search 75dpi

    Loaded plugins: fastestmirror, refresh-packagekit, security

    Loading mirror speeds from cached hostfile

     * base: centos.ustc.edu.cn

     * extras: centos.ustc.edu.cn

     * updates: centos.ustc.edu.cn

    ============================================================ N/S Matched: 75dpi ============================================================

    xorg-x11-fonts-75dpi.noarch : A set of 75dpi resolution fonts for the X Window System.

    xorg-x11-fonts-ISO8859-1-75dpi.noarch : A set of 75dpi ISO-8859-1 fonts for X.

    xorg-x11-fonts-ISO8859-14-75dpi.noarch : ISO8859-14-75dpi fonts

    xorg-x11-fonts-ISO8859-15-75dpi.noarch : ISO8859-15-75dpi fonts

    xorg-x11-fonts-ISO8859-2-75dpi.noarch : A set of 75dpi Central European language fonts for X.

    xorg-x11-fonts-ISO8859-9-75dpi.noarch : ISO8859-9-75dpi fonts

      Name and summary matches only, use "search all" for everything.

    > yum install xorg-x11-fonts-75dpi.noarch

    安装完成后,再执行:

    > rpm -ivh wkhtmltox-0.12.2_linux-centos6-amd64.rpm

    如果无法安装xorg-x11-fonts-75dpi.noarch

    直接使用如下方法解压rpm包内已经编译好的包:

    > rpm2cpio wkhtmltox-0.12.2_linux-centos6-amd64.rpm | cpio -div

    完成后在当前目录会生成一个 usr 的目录,里面包含 local/bin,local/include,local/share,local/lib四个文件夹

    将对应文件夹的内容拷贝至/usr/local即可!

    > cp -Rv ./usr/local/* /usr/local/

    wkhtmltox系统环境安装完成!

    2、安装php-wkhtmltox扩展

    下载github上的源码包 [php-wkhtmltox_master.zip]

    > unzip php-wkhtmltox_master.zip

    > cd phpwkhtmltox

    > phpize

    > ./configure --with-php-config=/usr/local/php/bin/php-config #此处按照各自系统php安装路径不同而定

    > make && make install

    > ldconfig #重新加载系统动态链接库

    > php -m

    # 检查扩展是否成功  如果能看到phpwkhtmltox  说明扩展成功 

    php-wkhtmltox扩展安装完成。

    3、修改php.ini文件开启扩展

    > vi /usr/local/php/etc/php.ini

    加入:

    extension="phpwkhtmltox.so"

    > /etc/init.d/php-fpm restart

    安装完成!

     

    本文参考: http://www.phpboy.net/linux/575.html

    安装部分可使用本文介绍的安装部分,有些可能需要中文字体支持,可参考上文中得中文字体库安装部分进行扩展。

     

     
     
     
     
  • 相关阅读:
    java算法----------常用的加密算法
    java多线程---------java.util.concurrent并发包----------等待多线程完成
    java多线程---------java.util.concurrent并发包----------ThreadPoolExecutor
    java多线程---------java.util.concurrent并发包
    一头扎进Spring之---------Spring核心容器----------
    深入理解java集合框架之---------Linked集合 -----构造函数
    深入理解java集合框架之---------Arraylist集合 -----添加方法
    深入理解java集合框架之---------Arraylist集合 -----构造函数
    深入理解java集合框架之---------HashMap集合
    linux输出与查看的几种方式
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/9916039.html
Copyright © 2011-2022 走看看