基于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 相关文章推荐
如何给phpadmin一个保护
Oct 09 PHP
php知道与问问的采集插件代码
Oct 12 PHP
php INI配置文件的解析实现分析
Jan 04 PHP
PHP统计目录下的文件总数及代码行数(去除注释及空行)
Jan 17 PHP
php图片上传存储源码并且可以预览
Aug 26 PHP
如何利用php array_multisort函数 对数据库结果进行复杂排序
Jun 08 PHP
在Mac上编译安装PHP7的开发环境
Jul 28 PHP
smarty的section嵌套循环用法示例
May 28 PHP
PHP自定义函数获取汉字首字母的方法
Dec 01 PHP
Laravel 中创建 Zip 压缩文件并提供下载的实现方法
Apr 02 PHP
PHP 观察者模式深入理解与应用分析
Sep 25 PHP
PHP获取学生成绩的方法
Nov 17 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
如何使用PHP中的字符串函数
2006/10/09 PHP
PHP的文件操作与算法实现的面试题示例
2015/08/10 PHP
javascript div 弹出可拖动窗口
2009/02/26 Javascript
广告切换效果(缓动切换)
2009/05/27 Javascript
JavaScript Event学习第五章 高级事件注册模型
2010/02/07 Javascript
JavaScript 小型打飞机游戏实现原理说明
2010/10/28 Javascript
JavaScript自定义DateDiff函数(兼容所有浏览器)
2012/03/01 Javascript
js模仿windows桌面图标排列算法具体实现(附图)
2013/06/16 Javascript
js随机生成字母数字组合的字符串 随机动画数字
2015/09/02 Javascript
自己动手写的javascript前端等待控件
2015/10/30 Javascript
js实现的星星评分功能函数
2015/12/09 Javascript
原生javascript实现的一个简单动画效果
2016/03/30 Javascript
javascript基础语法——全面理解变量和标识符
2016/06/02 Javascript
JS刷新父窗口的几种方式小结(推荐)
2016/11/09 Javascript
vuejs+element UI table表格中实现禁用部分复选框的方法
2019/09/20 Javascript
搭建vscode+vue环境的详细教程
2020/08/31 Javascript
js实现菜单跳转效果
2020/12/11 Javascript
[49:31]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS BO3 第二场 1月29日
2021/03/11 DOTA
详解Python3中的Sequence type的使用
2015/08/01 Python
django表单实现下拉框的示例讲解
2018/05/29 Python
python模拟鼠标点击和键盘输入的操作
2019/08/04 Python
python中自带的三个装饰器的实现
2019/11/08 Python
django序列化serializers过程解析
2019/12/14 Python
如何基于python实现画不同品种的樱花树
2020/01/03 Python
Python3读取和写入excel表格数据的示例代码
2020/06/09 Python
详解CSS3阴影 box-shadow的使用和技巧总结
2016/12/03 HTML / CSS
HTML5+CSS3网页加载进度条的实现,下载进度条的代码实例
2016/12/30 HTML / CSS
澳大利亚连衣裙和女装在线:Esther
2017/11/11 全球购物
"引用"与多态的关系
2013/02/01 面试题
临床医师专业个人自我评价范文
2013/11/07 职场文书
中专生的个人自我评价
2013/12/11 职场文书
开展批评与自我批评发言材料
2014/05/15 职场文书
感恩祖国演讲稿
2014/09/09 职场文书
学前教育见习总结
2015/06/23 职场文书
2016学校先进集体事迹材料
2016/02/29 职场文书
vue实现简易音乐播放器
2022/08/14 Vue.js