开发者

PHP: How to capture browser window screen with php?

开发者 https://www.devze.com 2022-12-14 14:08 出处:网络
First of all, i am not sure, if it is possible to capture browser window scree开发者_StackOverflown with php, then

First of all, i am not sure, if it is possible to capture browser window scree开发者_StackOverflown with php, then how to do it?

If it is possible, the best will be to capture just the website content excluding browser parts such as menubar, toolbar, statusbar, etc.

Thanks


There is imagegrabscreen() and imagegrabwindow(), which would allow you to programmatically create screenshots from a browser running on the same machine via COM (Win only though). See the comments in the manual for how to omit the browser's chrome. With DCOM enabled, this would also work with remote windows machines that have been setup to allow access through DCOM.

On a sidenote for those that said PHP does not know about the browser, I'd suggest a look at get_browser() in the PHP manual. It's not much, but hey, it's not nothing.


This can absolutely be done, it just takes a little more than PHP to make it happen. I have an application written in PHP that takes snapshots of websites at certain intervals. It's a bit tricky to get going but here's the steps I took on a Linux machine:

  • Install Xvfb (or vnc-server) to emulate an X Windows session in memory. Start Xvfb on display :1
  • Install Firefox
  • Install imagemagick
  • Create a bash script to run Firefox on the desired URL. Mine looked like this:

.

#!/bin/bash
DISPLAY=:1 firefox &
sleep 2s
DISPLAY=:1 firefox -kill-all &
sleep 1s
DISPLAY=:1 firefox -url $1 &
sleep 5s
DISPLAY=:1 import -window root /var/www/images/screenshots/$2.png
  • Execute the script from PHP:

.

exec ('sh ../scripts/screencap.sh ' . $url . ' ' . $file_name);

The trickiest part for me was to get the browser to be full screen when the screenshot occurred. Because you can't access the browser directly, you have to configure everything via Firefox's config files, which can take some time to figure out.

Useful links to help you get started:

http://semicomplete.com/blog/geekery/xvfb-firefox.html http://www.webmasterworld.com/forum21/9182.htm


PHP knows nothing about the browser. In fact, usually the PHP has finished running before the browser receives the data.

If it is possible at all, it will have to be a client-side system such as Javascript. This can traverse the DOM, and so capture the model that the browser thinks it is displaying; but I don't recall seeing any tool to capture the actual graphics. In any case, it is not clear what you could do with such information. Browsers do not let Javascript access local files. I suppose you could in principle send it back to the server in an Ajax call.


Fundamentally unsupported by the architecture of the Internet, and for good reason. The server you're connecting to shouldn't have any more information about you than necessary to process and respond to your request. The server CERTAINLY shouldn't be able to capture information about what you're viewing on screen.

That said, you can probably rig something up involving client-side technologies like ActiveX or Flash or Java, which would capture the screen and then post it back to the server in an AJAX request, but you probably shouldn't. I can't imagine what kind of use you'd have for such a thing, other then perhaps debugging layout issues.


You can't do this from PHP (server-side).

But you could shell out and use one of the many HTML to PDF converters to capture the image (and there are plenty of tools to convert a PDF to something else).

0

精彩评论

暂无评论...
验证码 换一张
取 消