Captures d’écran de page Web avec PHP?

Je sais qu’il n’y a pas de moyen direct de prendre une capture d’écran d’une page Web avec PHP. Quel serait le moyen le plus simple d’y parvenir? Existe-t-il des outils de ligne de commande capables de le faire à partir d’un script PHP (je pense à quelque chose qui fonctionnerait dans un système d’exploitation NIX (OS X et / ou Linux en particulier)?

Edit: Ou peut-être une sorte de service Web auquel j’ai access via SOAP ou REST ou …

Edit # 2: J’ai trouvé une question connexe concernant l’option CLI, mais je serais toujours ouvert à d’autres méthodes si quelqu’un connaissait quelque chose.

Voir webkit2png pour un programme de ligne de commande OSX qui fait cela.

La page mentionne également des alternatives Linux.

[edit]: wkhtml2image est le nouveau venu en ville, et ça marche mieux que tout ce que j’ai jamais utilisé.

[edit2]: À partir de 2014, PhantomJS semble être la voie à suivre, car elle propose la version Webkit la plus récente des alternatives que je connais.

html2ps fait un travail décent pour les pages relativement simples, et nécessite très peu de binarys externes, ce qui signifie qu’il est très facile à installer / utiliser. Si vous contrôlez les pages que vous allez capturer, vous pouvez vous assurer qu’elles seront correctement rendues dans html2ps. Si vous espérez capturer des URL arbitraires, je ne suis pas sûr que le port PHP de HTML2PS soit à la hauteur. Ce n’est pas non plus la chose la plus rapide au monde (attendez-vous à des temps de rendu dans les secondes pour les pages complexes), mais cela n’a pas vraiment d’importance pour certaines applications.

Je ne sais pas si cela vous suffirait, car il y a des éléments ajoutés, mais cela vaut la peine d’essayer: http://www.snap.com

Vous pouvez utiliser les fonctions GD imagegrabscreen() ou imagegrabwindow() pour faire une capture d’écran, mais elles ne sont disponibles que sous Windows pour le moment.

Il est possible d’obtenir une image codée en base64 d’un site en utilisant l’API Google Pagespeed. Vous pouvez spécifier des vues de bureau ou mobiles, mais vous êtes limité à une image d’une certaine taille.