基于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 相关文章推荐
Windows下的PHP5.0安装配制详解
Sep 05 PHP
PHP的FTP学习(一)[转自奥索]
Oct 09 PHP
建立文件交换功能的脚本(一)
Oct 09 PHP
PHP MVC模式在网站架构中的实现分析
Mar 04 PHP
PHP 事务处理数据实现代码
May 13 PHP
ThinkPHP实现事务回滚示例代码
Jun 23 PHP
php之Smarty模板使用方法示例详解
Jul 08 PHP
PHP语法自动检查的Vim插件
Aug 11 PHP
PHP互换两个变量值的方法(不用第三变量)
Nov 14 PHP
php_pdo 预处理语句详解
Nov 21 PHP
Yii2框架中使用PHPExcel导出Excel文件的示例
Aug 09 PHP
discuz论坛更换域名,详细文件修改步骤
Dec 09 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
Win2000+Apache+MySql+PHP4+PERL安装使用小结
2006/10/09 PHP
phpwind中的数据库操作类
2007/01/02 PHP
PHP memcache扩展的三种安装方法
2009/04/26 PHP
PHP file_get_contents 函数超时的几种解决方法
2009/07/30 PHP
CodeIgniter基本配置详细介绍
2013/11/12 PHP
php基于闭包实现函数的自调用(递归)实例分析
2016/11/11 PHP
Laravel 队列使用的实现
2019/01/08 PHP
javascript tips提示框组件实现代码
2010/11/19 Javascript
快速查找数组中的某个元素并返回下标示例
2013/09/03 Javascript
高性能JavaScript模板引擎实现原理详解
2015/02/05 Javascript
异步安全加载javascript文件的方法
2015/07/21 Javascript
JQuery用户名校验的具体实现
2016/03/18 Javascript
jQuery实现表格行和列的动态添加与删除方法【测试可用】
2016/08/01 Javascript
BootstrapValidator不触发校验的实现代码
2016/09/28 Javascript
解决option标签selected=&quot;selected&quot;属性失效的问题
2017/11/06 Javascript
详解Vue Elementui中的Tag与页面其它元素相互交互的两三事
2018/09/25 Javascript
从源码里了解vue中的nextTick的使用
2018/11/22 Javascript
微信小程序实现星级评价效果
2018/12/28 Javascript
Vue3.0 响应式系统源码逐行分析讲解
2019/10/14 Javascript
详解关于Vue单元测试的几个坑
2020/04/26 Javascript
python通过colorama模块在控制台输出彩色文字的方法
2015/03/19 Python
Python调用C++程序的方法详解
2017/01/24 Python
详解Python并发编程之从性能角度来初探并发编程
2019/08/23 Python
Python如何读取、写入CSV数据
2020/07/28 Python
美国奢侈品在线团购网站:Gilt City
2017/11/16 全球购物
英国著名药妆店:Superdrug
2021/02/13 全球购物
python re模块和正则表达式
2021/03/24 Python
路政管理毕业自荐书范文
2014/02/10 职场文书
优秀毕业生自我鉴定
2014/02/11 职场文书
文案策划求职信
2014/03/18 职场文书
交通文明倡议书
2014/05/16 职场文书
淘宝活动总结范文
2014/06/26 职场文书
民事诉讼答辩状范文
2015/05/21 职场文书
送给小学生的暑假礼物!小学生必背99首古诗
2019/07/02 职场文书
Python 把两层列表展开平铺成一层(5种实现方式)
2021/04/07 Python
Python基础之元编程知识总结
2021/05/23 Python