I recently needed to make a screenshot of an entire web page, i.e. not just the part the fits on the screen (or in the viewport), but the whole thing from top to bottom.
Somehow I missed the possibility that there might be a zillion browser extensions for just this purpose. From writing features (acceptance tests) with Cucumber I’m familiar with PhantomJS, a “headless”, scriptable browser based on WebKit.
Here’s how it works:
$ webshot --help
Usage: webshot [OPTIONS]... URL IMAGE_FILE
Options:
-j|--jquery Inject jQuery into the page.
+-e|--exec «value» Execute script in page context.
+-f|--file «value» Execute script file in page context.
-v|--viewport «value» Viewport size WxH; default 1280x800.
(* mandatory option)
(+ repeatable option)
Luckily, I didn’t have to write the commandline parsing myself. But it was fun to figure out how Deferreds might be implemented.