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.