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
需要说明的是,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
下载并解压
2 |
#unzip master.zip |
作为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
安装部分可使用本文介绍的安装部分,有些可能需要中文字体支持,可参考上文中得中文字体库安装部分进行扩展。
PHP如何生成文章预览图的更多相关文章
- 资源管理器总是生成 avi,mpeg的预览图
感觉非常讨厌. 图片可以直接显示,但是视频的预览图感觉很不舒服. 查了一下 , 用ShellExView 禁用一下 MF XXXX Property Handler 就可以了. 官网最下面可以下载: ...
- 为Unity的新版ugui的Prefab生成预览图
using UnityEngine;using System.Collections;using UnityEditor;using System.IO; [CustomPreview(typeof( ...
- 可拖拽和带预览图的jQuery文件上传插件ssi-uploader
插件描述:ssi-uploader是一款带预览图并且可以拖拽文件的jQuery ajax文件上传插件.该文件上传插件支持AJAX,支持多文件上传,可控制上的文件格式和文件大小,提供各种回调函数,使用非 ...
- PHP正则提取或替换img标记属性实现文章预览
今天在想如何实现文章预览时,如果文章里面包含照片,那么就选取第一张照片作为预览图,如果没有照片,则截取文章的头150个字作为预览文字,但是因为保存在数据库的文章都是以富文本的形式,没办法直接提取,在网 ...
- APP图标设计小技巧:在iOS上快速获得APP图标的真实预览图
严格来说,这并不是一篇关于前端开发的文章,因为涉及到的知识非常浅.这只是一个向设计狮们分享的小经验,只是其中用到了一些前端内容. 最近接了个私活,了解到一个初创公司正在高价悬赏Logo(主要用于APP ...
- 18.libgdx制作预览图,背景移动循环,改变地图颜色
经过构思,游戏将分为两部分, 1,预览图,只负责展示世界形势 2,根据预览图生成的战役项 现在要记录的是我制作预览图的部分 1.预览图只有实际地图的1/4,首先生成地图(建议不要缩放以前地图,由于误差 ...
- HTML5-video标签-实现点击预览图播放或暂停视频
HTML5-video标签-实现点击预览图播放或暂停视频 刚刚参加工作,开始更多的接触到一些新的知识,促使我开始了解html5和css3的新特性.这时我才真的发现到html5和css3的强大. 之前关 ...
- Images corrections preview with lensfun 不同型号镜头预览图 828张 合集
lensfun 目前支持900多种镜头, 但是网上并没有预览图; 闲暇时间做了800多张预览图合集 下载地址 链接: https://pan.baidu.com/s/1crfhoKKZKnxntvNH ...
- bbs项目引入富文本编辑器和处理xss攻击和文章预览
一.富文本编辑上传文章和图片 富文本编辑器我们使用kindeditor,我们首先去官网下载,然后解压,放到我们的static的目录中 然后我们在html中这样使用富文本编辑器 <!DOCTYPE ...
随机推荐
- AVG
AVG([ DISTINCT | ALL ] expr) [ OVER(analytic_clause) ] SELECT MANAGER_ID, LAST_NAME, ...
- Python 3 利用 Dlib 实现人脸 68个 特征点的标定
0. 引言 利用 Dlib 官方训练好的模型 “shape_predictor_68_face_landmarks.dat” 进行 68 个点标定: 利用 OpenCv 进行图像化处理,在人脸上画出 ...
- Windows系统下做定时任务为Oracle数据库每天自动备份
1.创建备份目录d:\backup, 创建批处理命令Bak.bat,编写备份脚本 ? 1 2 exp user/passwd@orcl DIRECT=Y BUFFER=100000 FILE=D:\b ...
- 07.Curator计数器
这一篇文章我们将学习使用Curator来实现计数器.顾名思义,计数器是用来计数的,利用ZooKeeper可以实现一个集群共享的计数器.只要使用相同的path就可以得到最新的计数器值,这是由Zo ...
- ebay商品基本属性组合成数据表格式,可用上传到系统递交数据
该刊登表设计是利用VB写的,当时因为两个系统的数据不能直接对接,又copy并且组合SKU,一个表格一个表格填写,比较麻烦,还好刊登系统可以允许用excel表格上传数据 所以就下好模板,学了VB语言,在 ...
- Service学习笔记
一 什么是Service Service作为安卓四大组件之一,拥有重要的地位.Service和Activity级别相同,只是没有界面,是运行于后台的服务.这个运行“后台”是指不可见,不是指在后台线程中 ...
- 利用Python分析GP服务运行结果的输出路径 & 实现服务输出路径的本地化 分类: Python ArcGIS for desktop ArcGIS for server 2015-08-06 19:49 3人阅读 评论(0) 收藏
最近,一直纠结一个问题:做好的GP模型或者脚本在本地运行,一切正常:发布为GP服务以后时而可以运行成功,而更多的是运行失败,甚至不能知晓运行成功后的结果输出在哪里. 铺天盖地的文档告诉我,如下信息: ...
- 设置webView头部不能滑动
设置webView头部不能滑动 _webView.scrollView.bounces=NO;
- python通过os.walk() 遍历出多级目录下所有文件绝对路径
代码如下 将遍历出来的路径全部添加到列表中: def get_all_abs_path(source_dir): path_list = [] for fpathe, dirs, fs in os.w ...
- 007-spring cache-缓存实现-02-springboot ehcahe3实现、springboot caffeine实现
一.springboot ehcahe3实现步骤 EhCache 是一个纯Java的进程内缓存框架,具有快速.精干等特点,是Hibernate中默认CacheProvider.Ehcache是一种广泛 ...