user1083320
user1083320

Reputation: 1946

Convert HTML to Image in PHP without shell

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!!

Upvotes: 7

Views: 23472

Answers (5)

Roger Gajraj
Roger Gajraj

Reputation: 533

It is possible to convert html to image. However, first you must convert to PDF. see link

Upvotes: 1

saad arshad
saad arshad

Reputation: 259

use WKHTMLTOPDF. works like a charm. it converts to any page to PDF .. a jpeg can be obtained by performing later operation.

http://code.google.com/p/wkhtmltopdf/

Upvotes: 0

urzeit
urzeit

Reputation: 2909

You may have a look at dompdf which is a php framework to convert a html file to a pdf.

Upvotes: 0

Spudley
Spudley

Reputation: 168853

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.

Upvotes: 14

Pekka
Pekka

Reputation: 449813

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).

Upvotes: 3

Related Questions