基于linnux+phantomjs实现生成图片格式的网页快照


Posted in PHP onApril 15, 2015

安装扩展:
  (1)下面是我在linux上的安装过程,如果没有安装git请先yum install git
    安装casperjs

    cd /

    git clone git://github.com/n1k0/casperjs.git

    cd casperjs

    ln -sf /casperjs/bin/casperjs /usr/local/bin/casperjs  //可以忽略 实际执行中php是执行 /casperjs/bin/casperjs

 
    (2)安装phantomjs,下载地址:http://phantomjs.org/download.html
       下载后操作很简单,直接把解压好的\bin\phantomjs移动到\usr\local\bin\phantomjs就可以了。\
       测试phantomjs --version 有结果不报错,说明安装OK
 
    (3)安装字体
      1. 首先获得一套“微软雅黑”字体库(Google一下一大把),包含两个文件msyh.ttf(普通)、msyhbd.ttf(加粗);
      2. 在/usr/share/fonts目录下建立一个子目录,例如win,命令如下:
# mkdir /usr/share/fonts/win

      3. 将msyh.ttf和msyhbd.ttf复制到该目录下,例如这两个文件放在/root/Desktop下,使用命令:

 # cd /root/Desktop

 # cp msyh.ttf msyhbd.ttf  /usr/share/fonts/win/

      4. 建立字体索引信息,更新字体缓存:

   # cd /usr/share/fonts/win

          # mkfontscale  (如果提示 mkfontscale: command not found,需自行安装 # yum install mkfontscale )

          # mkfontdir

          # fc-cache    (如果提示 fc-cache: command not found,则需要安装# yum install fontconfig )

   至此,字体已经安装完毕!

<?php 
  if (isset($_GET['url'])) 
  { 
    set_time_limit(0); 
  
    $url = trim($_GET['url']); 
    $filePath = md5($url).'.png'; 
    if (is_file($filePath)) 
    { 
      exit($filePath); 
    } 
 
    //如果不加这句就会报错“Fatal: [Errno 2] No such file or directory; did you install phantomjs?”,详情参考http://mengkang.net/87.html
    putenv("PHANTOMJS_EXECUTABLE=/usr/local/bin/phantomjs");
    $command = "phantomjs phantomjs.js {$url} {$filePath}"; 
    @exec($command); 
  
    exit($filePath); 
  } 
?> 
  
<!DOCTYPE html> 
<html> 
<head> 
<meta charset="utf-8" /> 
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> 
<meta name="keywords" content="" /> 
<meta name="description" content="" /> 
<title>快照生成</title> 
<script src="http://code.jquery.com/jquery-1.8.3.min.js"></script> 
<style> 
* {margin: 0; padding: 0; } form {padding: 20px; } div {margin: 20px 0 0; } input {width: 200px; padding: 4px 2px; } #placeholder {display: none; } 
</style>
</head> 
  
<body> 
  <form action="" id="form"> 
    <input type="text" id="url" /> 
    <button type="submit">生成快照</button> 
  
    <div> 
      <img src="" alt="" id="placeholder" /> 
    </div> 
  </form> 
  <script> 
  $(function(){ 
    $('#form').submit(function(){ 
      if (typeof($(this).data('generate')) !== 'undefined' && $(this).data('generate') === true) 
      { 
        alert('正在生成网站快照,请耐心等待...'); 
        return false; 
      } 
  
      $(this).data('generate', true); 
      $('button').text('正在生成快照...').attr('disabled', true); 
  
      $.ajax({ 
        type: 'GET', 
        url: '?', 
        data: 'url=' + $('#url').val(), 
        success: function(data){ 
          $('#placeholder').attr('src', data).show(); 
          $('#form').data('generate', false); 
          $('button').text('生成快照').attr('disabled', false); 
        } 
      }); 
  
      return false; 
    }); 
  }); 
  </script> 
</body> 
</html>




var page = require('webpage').create(); 
var args = require('system').args; 
 
var url = args[1]; 
var filename = args[2]; 
 
page.open(url, function () { 
  page.render(filename); 
  phantom.exit(); 
});

以上所述就是本文的全部内容了,希望大家能够喜欢。

PHP 相关文章推荐
一个分页的论坛
Oct 09 PHP
php下一个阿拉伯数字转中文数字的函数
Jul 16 PHP
php简单提示框alert封装函数
Aug 08 PHP
浅析PHP递归函数返回值使用方法
Feb 18 PHP
使用PHP静态变量当缓存的方法
Nov 13 PHP
PHP实现视频文件上传完整实例
Aug 28 PHP
php中smarty模板条件判断用法实例
Jun 11 PHP
PHP使用trim函数去除字符串左右空格及特殊字符实例
Jan 07 PHP
php连接mysql数据库
Mar 21 PHP
浅谈PHP的exec()函数无返回值排查方法(必看)
Mar 31 PHP
Yii2框架控制器、路由、Url生成操作示例
May 27 PHP
thinkphp框架无限级栏目的排序功能实现方法示例
Mar 29 PHP
微信API接口大全
Apr 15 #PHP
php实现判断访问来路是否为搜索引擎机器人的方法
Apr 15 #PHP
PHP记录搜索引擎蜘蛛访问网站足迹的方法
Apr 15 #PHP
php获取Google机器人访问足迹的方法
Apr 15 #PHP
分享自定义的几个PHP功能函数
Apr 15 #PHP
php中使用in_array() foreach array_search() 查找数组是否包含时的性能对比
Apr 14 #PHP
PHP也能干大事 随机函数
Apr 14 #PHP
You might like
用 PHP5 轻松解析 XML
2006/12/04 PHP
用Json实现PHP与JavaScript间数据交换的方法详解
2013/06/20 PHP
php+curl 发送图片处理代码分享
2015/07/09 PHP
php 的多进程操作实践案例分析
2020/02/28 PHP
对联广告js flash激活
2006/10/19 Javascript
JS效率个人经验谈(8-15更新),加入range技巧
2007/01/09 Javascript
JSON 编辑器实现代码
2009/12/06 Javascript
JavaScript 联动的无限级封装类,数据采用非Ajax方式,随意添加联动
2010/06/29 Javascript
javascript动态添加样式(行内式/嵌入式/外链式等规则)
2013/06/24 Javascript
Js中获取frames中的元素示例代码
2013/07/30 Javascript
javascript模拟枚举的简单实例
2014/03/06 Javascript
javascript监听鼠标滚轮事件浅析
2014/06/05 Javascript
jquery实现的树形目录实例
2015/06/26 Javascript
JavaScript中使用数组方法汇总
2016/02/16 Javascript
分享ES6的7个实用技巧
2018/01/18 Javascript
React组件中的this的具体使用
2018/02/28 Javascript
Vue入门之数量加减运算操作示例
2018/12/11 Javascript
JavaScript 截取字符串代码实例
2019/09/05 Javascript
JavaScript实现联动菜单特效
2020/01/07 Javascript
node.js中对Event Loop事件循环的理解与应用实例分析
2020/02/14 Javascript
vue3.0 加载json的方法(非ajax)
2020/10/26 Javascript
微信小程序抽奖组件的使用步骤
2021/01/11 Javascript
Python操作Mysql实例代码教程在线版(查询手册)
2013/02/18 Python
简单谈谈Python流程控制语句
2016/12/04 Python
如何用Python合并lmdb文件
2018/07/02 Python
python 去除txt文本中的空格、数字、特定字母等方法
2018/07/24 Python
python对html过滤处理的方法
2018/10/21 Python
CSS3对图片照片进行边缘模糊处理的实现
2018/08/08 HTML / CSS
CSS实现圆形放大镜狙击镜效果 只有圆圈里的放大
2012/12/10 HTML / CSS
精通CAD能手自荐书
2014/01/31 职场文书
十一酒店活动方案
2014/02/20 职场文书
保密工作目标责任书
2014/07/28 职场文书
春节超市活动方案
2014/08/14 职场文书
2015年三八妇女节活动总结
2015/02/06 职场文书
档案工作个人总结
2015/03/03 职场文书
2015年社区环境卫生工作总结
2015/04/21 职场文书