As far as I can tell, you'll need to just zoom in on the selected area and print it, assuming you're using the Print Task found here: https://developers.arcgis.com/javascript/jsapi/printtask-amd.html. It doesn't look like there's an option to print only part of what's visible.
Note: The PrintTask requires an ArcGIS Server 10.1 Export Web Map Task. So make sure you've got that first.
1) This is not the same thing as the Export Web Map task.
2) It does not print the basemap, only the layers on your server.
3) It does allow you to specify a bounding box.
If export is available on your server and you choose this option you'll want to use the Draw toolbar instead of the navigation area: https://developers.arcgis.com/javascript/jsapi/draw-amd.html. Get the extent of the shape once it's drawn and pass the xmin, ymin, xmax, ymax to the export function.
it could be more than one thing, but my guess is that you're calling 'execute' and the print task is actually set up as asynchronous or 'submitJob' and its synchronous
in order to tell for sure, browse the REST services directory to see what operation the service actually supports and compare that to the URL that 500s.
if thats the problem, you can set sync/async in the PrintTask constructor parameters.
Best Answer
Version 2.6 of the ArcGIS API for JavaScript (released today :) ) adds a print dijit and a print task. These both take advantage of ArcGIS Server 10.1 print service. A simple sample using the print dijit is also available. Note that the 10.1 service used in the sample is from a beta release of ArcGIS Server 10.1.