How to take a screenshot of a window larger than the screen

Solution 1:

I believe Screenshot Captor is the tool you're looking for. It involves a slight learning curve though and the scrolling window capture feature might seem intimidating at first.

It can capture objects, meaning content within windows with scroll bars (horizontal and vertical), individual program controls, etc.

It is quite powerful but some tweaking with the settings may be necessary to get what you want and hence, the learning curve.

If you try the program and it doesn't work for you, before you dismiss it, watch the videos listed on this page, especially this one about basic scrolling window capture.

Here's an example capture of a scrolling Windows Explorer window (click to view full size): Scrolling window capture

Solution 2:

  1. I've had to test how software works/looks in displays larger than the one I have, and I've done it in a virtual machine with VMWare Workstation. I just went to VM settings, Display, and wrote there the resolution. It's easy to take screenshot with the virtualization software (Ctrl+Alt+PrtScr, and they get auto-saved to the host's desktop). Although I've never tried to go up to 6000×4000 until today :-)

    WinXP on VMWare Workstation 10 at 6000×4000

  2. While that covers the general case, the case of PDF files is much, much easier. There's a terribly useful (and free!) PDF renderer called MuPDF where you can just run

    mudraw -o page%d.png -r 300 document.pdf 5-9
    

    to get almost instantly 300-dpi PNGs of pages 5 through 9 of document.pdf (named page5.png, page6.png, ..., page9.png)

  3. One last thing: Someone mentioned screengrabbing whole webpages in Firefox? No extensions necessary! Just press Shift+F2 and write

    screenshot webcap.png --fullpage
    

Solution 3:

With Linux, the xrandr command simply creates a larger virtual screen, for example:

xrandr --output HDMI-1 --rate 60 --mode 1920x1200 --panning 3000x2000

Then take a screenshot in the normal way, which captures the whole virtual screen in that size as specified by the --panning option. It does also capture those areas which are outside the visible physical monitor area.

Solution 4:

There is nothing "beyond the screen", mostly because applications will not draw it.

Your best bet is to pan around the image, and use Photoshop (or your favorite image editor) to stitch the pieces together.

That's how it is in Windows at least; you don't say what "window" you have, and how you can "zoom out".

But if i was, for example, trying to steal images of Google Maps i would

  • pan around
  • save the small bits
  • stitch them together in Photoshop

Solution 5:

The good news: there's a way to capture your pdf in it's entirety.
The bad news: its a bit long winded and the pdf might not come out 100% correct!
(It's better than nothing right?)

So, to get this all working you will need to do the following:

  1. Grab a version of NodeJS from here and install it
  2. a. If you have git installed just clone the mozilla/pdf.js repo from github like so
    git clone git://github.com/mozilla/pdf.js.git pdfjs and cd into the directory
    b. if you don't have git then you'll need to download the whole code repository from here: https://github.com/mozilla/pdf.js/archive/master.zip
    unzip it and then open up command prompt and cd into the root of the folder
  3. run node make server

What you have done so far is create a web server running on localhost:8888 that is able to render pdfs using JavaScript. You can view an example pdf by going to the following page: http://localhost:8888/web/viewer.html?file=/examples/learning/helloworld.pdf

Next up you'll need to download PhantomJS.

  1. Grab it from here
  2. Unzip it wherever you like and then from the command prompt cd into the bin folder
  3. Copy the rasterize.js file from the examples folder of phantomjs into the bin folder (I know it's a bit dirty but we can sort it out later right?)
  4. Open up rasterize.js because we need to change something.
  5. Go to line 45 and change the time from 200 to something like 5000 for now. The code should look like: https://gist.github.com/HaykoKoryun/eba33f2011d3d69b773b
  6. Place a copy of the pdf file you want to capture into a folder called test in the pdfjs root folder
  7. Finally run the following command
    phantomjs.exe rasterize.js http://localhost:8888/web/viewer.html?file=/test/xxx.pdf test.png 1920px*1080px

What are those parameters I hear you say? The first one tells phantomjs which script to run. That's easy, in our case it's the modified version of rasterize.js!

The second one is the URL to load, which is the local webserver running pdfjs. Note that you'll need to replace the xxx with the name of your pdf file.

The third parameter is the name and format of the file you will save the capture to.

Finally the last parameter is the size of the capture. You'll need to play about with the size to make sure you capture the whole page.