Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Convert HTML to Image in PHP without shell

Tags:

html

php

image

I want the option of converting HTML to image and showing the result to the user. I would be creating an $html variable with PHP, and instead of displaying using echo $html, I want to display it as an image so the user can save the file if they needed to.

I was hoping there would something as simple as $image = convertHTML2Image($html); :p if that exists?!

Thanks!!

like image 846
user1083320 Avatar asked Oct 23 '12 21:10

user1083320


2 Answers

As @Pekka says, the job of turning HTML code into an image is the job of a full-blown web browser.

If you want to do this sort of thing, you therefore need to have a script that does the following:

  1. Opens the page in a browser.
  2. Captures the rendered page from the browser as a graphic.
  3. Outputs that graphic to your user.

Traditionally, this would have been a tough task, because web browsers are typically driven by the user and not easy to automate in this way.

Fortunately, there is now a solution, in the form of PhantomJS.

PhantomJS is a headless browser, designed for exactly this kind of thing -- automated tasks that require a full-blown rendering engine.

It's basically a full browser, but without the user interface. It renders the page content exactly as another browser would (it's based on Webkit, so results are similar to Chrome), and it can be controlled by a script.

As it says on the PhantomJS homepage, one of its target use-cases is for taking screenshots or thumbnail images of websites.

(another good use for it is automated testing of your site, where it is also a great tool)

Hope that helps.

like image 174
Spudley Avatar answered Nov 12 '22 10:11

Spudley


This is not possible in pure PHP.

What you call "converting" is in fact a huge, non-trivial task: the HTML page has to be rendered. To do this in PHP, you'd have to rewrite an entire web browser.

You'll either have to use an external tool (which usually taps into a browser's rendering engine) or a web service (which does the same).

like image 37
Pekka Avatar answered Nov 12 '22 09:11

Pekka