Linux下PHP自动生成文章预览图,html转换成各种格式图片、PDF-----转自phpboy的文章

摘要:
Linux下PHP自动生成文章预览图,最初大致的思路很简单,就是我能不能通过某种方式调用浏览器内核来渲染网页即HTML,然后将HTML保存为图片。can=1&q=&colspec=Filename+Summary+Uploaded+ReleaseDate+Size+DownloadCount需要说明的是,libwkhtmltox现在的版本已经是0.11了,但是本人在CentOS6.2下安装了libwkhtmltox-0.11之后,在将网页转换成图片时会出错,最终选择了0.10版本,这个版本还是相当稳定的。˃1.5.2.wkhtmltox_convert说明html转换为pdf示例:1˂?

原文地址:http://www.phpboy.net/linux/575.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
6drwxr-xr-x 2 root root 59 Jan 3 20:58 examples
7drwxr-xr-x 3 1000 1000 22 Nov 7 2010 include
8drwxr-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配置文件,追加

1extension=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
2wkhtmltox_convert(
3'image',
4array(
5'out'=>'/tmp/test.jpg',
7)
8);
9?>

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

html转换为pdf示例:

1<?php
2wkhtmltox_convert('pdf',
3array(
4'out'=>'/tmp/test.pdf',
5'imageQuality'=>'95'
6),// global settings
7array(
8array(
10),
11array(
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

免责声明:文章转载自《Linux下PHP自动生成文章预览图,html转换成各种格式图片、PDF-----转自phpboy的文章》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇[GXYCTF2019]BabysqliV3.0题解指数基金梳理下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

设置linux文件权限,使得同一用户组的可以在文件夹内自由增删文件(夹)

新添用户时设置权限 新增用户的时候设置用户所属组,将想要一起的用户设置到一个组内 usermod -g 用户组 用户名 #这里将用户的主组设置为这个总组,这里为了再之后创建文件的时候文件所属组为这个组 (or) usermod -aG 用户组 用户名 #如果不设置为主组的话,可以增到附属组里去,只要都在一个附属组也可以操...

20、Linux实操篇——磁盘分区、挂载

1、磁盘分区介绍 (1)分区基础知识 分区方式 ①mbr分区最多有四个主分区系统只能装在主分区拓展区要占一个主分区MBR最大只支持2TB,但拥有最好的兼容性②gtp分区支持无限多个分区(但可能受系统限制,比如Windows下最多128个分区)最大支持18EB的大容量(1EB=1024PB)Windows7 64位以后支持gtp分区 2、Linux分区 (1...

[C++]Linux之图形界面编程库[curses库]之入门教程

0. 环境 x86 / 64bit Linux Ubuntu 16.04 1. 安装 //方法一 sudo apt-get install libncurses5-dev 【 ubuntu 16.04:亲测有效】 //方法二 sudo apt-get install ncurses-dev //方法三【手动,ubuntu 16.04 测试:ncur...

PHP curl函数模拟爬虫(操作cookie)

curl函数.操作cookie,模拟爬虫 模拟cookie刷贴实例: 1 <?php 2 $ch = curl_init(); 3 //保存该次请求的cookie内容到文件cookie.txt 4 curl_setopt($ch, CURLOPT_COOKIEJAR, ”E:/cookie.txt”); 5...

linux查看修改线程默认栈空间大小(ulimit -s)

1.linux查看修改线程默认栈空间大小 ulimit -s a、通过命令 ulimit -s 查看linux的默认栈空间大小,默认情况下 为10240 即10M b、通过命令 ulimit -s 设置大小值 临时改变栈空间大小:ulimit -s 102400, 即修改为100M c、可以在/etc/rc.local 内 加入 ulimit -s 102...

性能调优攻略

摘要:关于性能优化这是一个比较大的话题,在《由12306.cn谈谈网站性能技术》中我从业务和设计上说过一些可用的技术以及那些技术的优缺点,今天,想从一些技术细节上谈谈性能优化,主要是一些代码级别的技术和方法。 关于性能优化这是一个比较大的话题,在《由12306.cn谈谈网站性能技术》中我从业务和设计上说过一些可用的技术以及那些技术的优缺点,今天,想从一些...