基于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 相关文章推荐
树型结构列出指定目录里所有文件的PHP类
Oct 09 PHP
php 获取可变函数参数的函数
Aug 26 PHP
利用php+mysql来做一个功能强大的在线计算器
Oct 12 PHP
PHP弹出提示框并跳转到新页面即重定向到新页面
Jan 24 PHP
php+memcache实现的网站在线人数统计代码
Jul 04 PHP
PHP GD库生成图像的几个函数总结
Nov 19 PHP
PHP使用Face++接口开发微信公众平台人脸识别系统的方法
Apr 17 PHP
php阿拉伯数字转中文人民币大写
Dec 21 PHP
详解php用curl调用接口方法,get和post两种方式
Jan 13 PHP
PHP _construct()函数讲解
Feb 03 PHP
php写入txt乱码的解决方法
Sep 17 PHP
PHP设计模式(八)装饰器模式Decorator实例详解【结构型】
May 02 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
把从SQL中取出的数据转化成XMl格式
2006/10/09 PHP
php魔术方法与魔术变量、内置方法与内置变量的深入分析
2013/06/03 PHP
跟我学Laravel之请求与输入
2014/10/15 PHP
php bootstrap实现简单登录
2016/03/08 PHP
利用switch语句进行多选一判断的实例代码
2016/11/14 PHP
laravel请求参数校验方法
2019/10/10 PHP
JS判定是否原生方法
2013/07/22 Javascript
jquery使用淘宝接口跨域查询手机号码归属地实例
2013/11/28 Javascript
动态的创建一个元素createElement及删除一个元素
2014/01/24 Javascript
JavaScript常用的返回,自动跳转,刷新,关闭语句汇总
2015/01/13 Javascript
js插件YprogressBar实现漂亮的进度条效果
2015/04/20 Javascript
JavaScript实现数组随机排序的方法
2015/06/26 Javascript
jQuery实现输入框邮箱内容自动补全与上下翻动显示效果【附demo源码下载】
2016/09/20 Javascript
BootStrapTable服务器分页实例解析
2016/12/20 Javascript
微信小程序之网络请求简单封装实例详解
2017/06/28 Javascript
安装vue-cli报错 -4058 的解决方法
2017/10/19 Javascript
babel的使用及安装配置教程
2018/02/22 Javascript
记一次用vue做的活动页的方法步骤
2019/04/11 Javascript
egg.js的基本使用和调用数据库的方法示例
2019/05/18 Javascript
JS+CSS实现随机点名(实例代码)
2019/11/04 Javascript
Python中的高级数据结构详解
2015/03/27 Python
Python如何爬取实时变化的WebSocket数据的方法
2019/03/09 Python
基于python操作ES实例详解
2019/11/16 Python
Python抓新型冠状病毒肺炎疫情数据并绘制全国疫情分布的代码实例
2020/02/05 Python
利用python画出AUC曲线的实例
2020/02/28 Python
Python Tornado批量上传图片并显示功能
2020/03/26 Python
python3实现飞机大战
2020/11/29 Python
Python新建项目自动添加介绍和utf-8编码的方法
2020/12/26 Python
HTML5 Canvas图像模糊完美解决办法
2018/02/06 HTML / CSS
HTML5实现签到 功能
2018/10/09 HTML / CSS
寻找迷宫的一条出路,o通路;X:障碍
2016/07/10 面试题
管理信息系学生的自我评价
2014/01/11 职场文书
一年级评语大全
2014/04/23 职场文书
2014年小学语文工作总结
2014/12/20 职场文书
2015年世界水日活动总结
2015/02/09 职场文书
一篇文章弄懂Python关键字、标识符和变量
2021/07/15 Python