diff --git a/print.pages.inc b/print.pages.inc
index b3e1657..818149c 100644
--- a/print.pages.inc
+++ b/print.pages.inc
@@ -98,9 +98,10 @@ function print_controller($path, $format, $cid = NULL, $view_mode = PRINT_VIEW_M
     $path = implode('/', $parts);
   }
   $revision_view = preg_match('!^[\d]*/revisions/[\d]*/view$!', $path);
-  if (ctype_digit($parts[0]) && ((count($parts) == 1) || $revision_view) && !$node_router) {
+  if (ctype_digit($parts[0]) && !$node_router) {
     $vid = $revision_view ? $parts[2] : NULL;
-    $node = _print_generate_node($path, $format, $vid, $cid, $view_mode);
+    $nid = $parts[0];
+    $node = _print_generate_node($nid, $format, $vid, $cid, $view_mode);
   }
   else {
     $ret = preg_match('!^book/export/html/(.*)!i', $path, $matches);
@@ -608,6 +609,10 @@ function _print_generate_node($nid, $format, $vid = NULL, $cid = NULL, $view_mod
     $langcode = $GLOBALS['language_content']->language;
   }
 
+  if (arg(2) != '') {
+    $view_mode = arg(2);
+  }
+
   // We can take a node id.
   $node = node_load($nid, $vid);
   if (!$node) {
