diff --git a/modules/book/book.module b/modules/book/book.module
index de9561f..5abb391 100644
--- a/modules/book/book.module
+++ b/modules/book/book.module
@@ -100,7 +100,7 @@ function book_node_view_link($node, $view_mode) {
         );
       }
 
-      if (user_access('access printer-friendly version')) {
+      if (user_access('access printer-friendly version') && $node->status == 1) {
         $links['book_printer'] = array(
           'title' => t('Printer-friendly version'),
           'href' => 'book/export/html/' . $node->nid,
diff --git a/modules/book/book.pages.inc b/modules/book/book.pages.inc
index 1617f00..e153fa4 100644
--- a/modules/book/book.pages.inc
+++ b/modules/book/book.pages.inc
@@ -74,6 +74,9 @@ function book_export_html($nid) {
     $export_data = array();
     $node = node_load($nid);
     if (isset($node->book)) {
+      if (!$node->status) {
+        drupal_access_denied();
+      }
       $tree = book_menu_subtree_data($node->book);
       $contents = book_export_traverse($tree, 'book_node_export');
       return theme('book_export_html', array('title' => $node->title, 'contents' => $contents, 'depth' => $node->book['depth']));
diff --git a/modules/book/book.test b/modules/book/book.test
index cc61778..4b5da7e 100644
--- a/modules/book/book.test
+++ b/modules/book/book.test
@@ -50,6 +50,7 @@ class BookTestCase extends DrupalWebTestCase {
      *   |- Node 2
      *  |- Node 3
      *  |- Node 4
+     *   |- Node 5
      */
     $nodes = array();
     $nodes[] = $this->createBookNode($book->nid); // Node 0.
@@ -57,6 +58,7 @@ class BookTestCase extends DrupalWebTestCase {
     $nodes[] = $this->createBookNode($book->nid, $nodes[0]->book['mlid']); // Node 2.
     $nodes[] = $this->createBookNode($book->nid); // Node 3.
     $nodes[] = $this->createBookNode($book->nid); // Node 4.
+    $nodes[] = $this->createBookNode($book->nid, $nodes[4]->book['mlid'], FALSE); // Node 5.
 
     $this->drupalLogout();
 
@@ -82,6 +84,12 @@ class BookTestCase extends DrupalWebTestCase {
     $this->checkBookNode($nodes[3], NULL, $nodes[2], $book, $nodes[4], array($book));
     $this->checkBookNode($nodes[4], NULL, $nodes[3], $book, FALSE, array($book));
 
+    // Check that unpublished book nodes can't be exported as HTML
+    $this->drupalGet('node/' . $nodes[5]->nid);
+    $this->assertNoLinkByHref('book/export/html/' . $nodes[5]->nid);
+    $this->drupalGet('book/export/html' . $nodes[5]->nid);
+    $this->assertResponse(403);
+
     $this->drupalLogout();
 
     // Create a second book, and move an existing book page into it.
@@ -190,7 +198,7 @@ class BookTestCase extends DrupalWebTestCase {
    * @param integer $book_nid Book node id or set to 'new' to create new book.
    * @param integer $parent Parent book reference id.
    */
-  function createBookNode($book_nid, $parent = NULL) {
+  function createBookNode($book_nid, $parent = NULL, $status = TRUE) {
     // $number does not use drupal_static as it should not be reset
     // since it uniquely identifies each call to createBookNode().
     static $number = 0; // Used to ensure that when sorted nodes stay in same order.
@@ -200,6 +208,7 @@ class BookTestCase extends DrupalWebTestCase {
     $edit["title"] = $number . ' - SimpleTest test node ' . $this->randomName(10);
     $edit["body[$langcode][0][value]"] = 'SimpleTest test body ' . $this->randomName(32) . ' ' . $this->randomName(32);
     $edit['book[bid]'] = $book_nid;
+    $edit['status'] = $status;
 
     if ($parent !== NULL) {
       $this->drupalPost('node/add/book', $edit, t('Change book (update list of parents)'));
