Сделать скриншот результатов из формы, средствами php

Discussion in 'PHP' started by GAiN, 1 Mar 2013.

  1. GAiN

    GAiN Elder - Старейшина

    Joined:
    2 Apr 2011
    Messages:
    2,550
    Likes Received:
    172
    Reputations:
    99
    Для мониторинга формы нужно сделать скриншот, и сохранить его на сервере.
    можно ли такое реальзовать ?
    есть небольшое диалоговое окно, и при открытии его должен создатся скриншот на сервере
    или если можно то сохранить html форму с результатами в файл 1.html
     
  2. mironich

    mironich Elder - Старейшина

    Joined:
    27 Feb 2011
    Messages:
    733
    Likes Received:
    73
    Reputations:
    19
    Сохранить надо форму или скрин.*? Средствами js скрин, аяксом шлем его на php скрипт который его и запишет)
     
  3. draliokero

    draliokero Member

    Joined:
    14 Mar 2009
    Messages:
    83
    Likes Received:
    6
    Reputations:
    0
    Можно в режиме php5-cli делать скриншоты, для этого нужен пакет wkhtmltopdf, который создает PDF-страницу из HTML и imagemagick, который конвертирует эту страницу в любой популярный формат изображений.
    Ubuntu:
    Code:
    sudo aptitude install imagemagick wkhtmltopdf
    PHP:
    <?php
    // save this snippet as url_to_png.php
    // usage: php url_to_png.php http://example.com
    if (!isset($argv[1])){
        die(
    "specify site: e.g. http://example.com\n");
    }
     
    $md5 md5($argv[1]);
    $command "wkhtmltopdf $argv[1] $md5.pdf";
    exec($command$output$ret);
    if (
    $ret) {
        echo 
    "error fetching screen dump\n";
        die;
    }
     
    $command "convert $md5.pdf -append $md5.png";
    exec($command$output$ret);
    if (
    $ret){
        echo 
    "Error converting\n";
        die;
    }
     
    echo 
    "Conversion compleated: $argv[1] converted to $md5.png\n"
    Можно использовать COM-объект IE в среде WIndows:
    PHP:
    ?php
    $Browser 
    = new COM('InternetExplorer.Application');
    $Browserhandle $Browser->HWND;
    $Browser->Visible true;
    $Browser->Fullscreen true;
    $Browser->Navigate('http://example.com');

    while(
    $Browser->Busy){
      
    com_message_pump(4000);
    }

    $img imagegrabwindow($Browserhandle0);
    $Browser->Quit();
    imagepng($img'screenshot.png');
    ?>
    На виртуальном сервере, можно использовать парсинг ресурсов делающих скриншоты, таких как http://browsershots.org/ либо API сторонних ресурсов, единственное придется пускать по USER-агентам такие сервисы к закрытым частям ресурса.

    Можно использовать, HTML5 canvas и на стороне клиента создавать изображения, как пример: http://experiments.hertzen.com/jsfeedback/
     
    1 person likes this.