基于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 相关文章推荐
COM in PHP (winows only)
Oct 09 PHP
Windows中安装Apache2和PHP4权威指南
Nov 18 PHP
function.inc.php超越php
Dec 09 PHP
PHPMYADMIN 简明安装教程 推荐
Mar 07 PHP
php中记录用户访问过的产品,在cookie记录产品id,id取得产品信息
May 04 PHP
php URL跳转代码 减少外链
Jun 25 PHP
PHP怎么实现网站保存快捷方式方便用户随时浏览
Aug 15 PHP
php简单smarty入门程序实例
Jun 11 PHP
Yii2使用自带的UploadedFile实现的文件上传
Jun 20 PHP
php获取开始与结束日期之间所有日期的方法
Nov 29 PHP
利用laravel搭建一个迷你博客实战教程
Aug 13 PHP
tp5.1 框架数据库-数据集操作实例分析
May 26 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 a simple smtp class
2007/11/26 PHP
PHP XML操作类DOMDocument
2009/12/16 PHP
PHP采集腾讯微博的实现代码
2012/01/19 PHP
ThinkPHP3.1新特性之命名范围的使用
2014/06/19 PHP
php基于Snoopy解析网页html的方法
2015/07/09 PHP
php正则提取html图片(img)src地址与任意属性的方法
2017/02/08 PHP
php微信开发之图片回复功能
2018/06/14 PHP
php数值计算num类简单操作示例
2020/05/15 PHP
《JavaScript DOM 编程艺术》读书笔记之JavaScript 语法
2015/01/09 Javascript
JavaScript对象创建模式实例汇总
2016/10/03 Javascript
vue.js中指令Directives详解
2017/03/20 Javascript
Vue响应式原理详解
2017/04/18 Javascript
nodejs中解决异步嵌套循环和循环嵌套异步的问题
2017/07/12 NodeJs
利用nvm管理多个版本的node.js与npm详解
2017/11/02 Javascript
Angularjs过滤器实现动态搜索与排序功能示例
2017/12/13 Javascript
element ui 表格动态列显示空白bug 修复方法
2018/09/04 Javascript
原生JS实现的跳一跳小游戏完整实例
2019/01/27 Javascript
使用koa2创建web项目的方法步骤
2019/03/12 Javascript
vue-i18n结合Element-ui的配置方法
2019/05/20 Javascript
JavaScript中的 new 命令
2019/05/22 Javascript
关于layui的动态图标不显示的解决方法
2019/09/04 Javascript
javascript写一个ajax自动拦截并下载数据代码实例
2019/09/07 Javascript
vue + node如何通过一个Txt文件批量生成MP3并压缩成Zip
2020/06/02 Javascript
Python实现的生成自我描述脚本分享(很有意思的程序)
2014/07/18 Python
Python捕捉和模拟鼠标事件的方法
2015/06/03 Python
Python中的sys.stdout.write实现打印刷新功能
2020/02/21 Python
DjangoWeb使用Datatable进行后端分页的实现
2020/05/18 Python
CSS3弹性盒模型开发笔记(一)
2016/04/26 HTML / CSS
意大利运动服减价商店:ScontoSport
2020/03/10 全球购物
银行简历自我评价
2014/02/11 职场文书
表彰会主持词
2014/03/26 职场文书
党员廉洁自律承诺书
2014/05/26 职场文书
处级领导干部四风问题自我剖析材料
2014/09/29 职场文书
MySQL安装后默认自带数据库的作用详解
2021/04/27 MySQL
最新动漫情报:2022年7月新番定档超过30部, OVERLORD骨王第四季也在其中噢
2022/05/04 日漫
HTML页面中使两个div并排显示的实现
2022/05/15 HTML / CSS