Index: src/PrintBuilder.php
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- src/PrintBuilder.php	(revision 2e73444c64e08532074a30e1ea172129a0523605)
+++ src/PrintBuilder.php	(revision )
@@ -90,4 +90,56 @@
     return $renderer->generateHtml([$entity], $render, $use_default_css, $optimize_css);
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public function savePrintable(array $entities, PrintEngineInterface $print_engine, $uri = '', $use_default_css = TRUE) {
+    $renderer = $this->prepareRenderer($entities, $print_engine, $use_default_css);
+
+    // Allow other modules to alter the generated Print object.
+    $this->dispatcher->dispatch(PrintEvents::PRE_SEND, new PreSendPrintEvent($print_engine, $entities));
+
+    // If we didn't have a URI passed in the generate one.
+    if (!$uri) {
+      $uri = file_default_scheme() . '://' . $renderer->getFilename($entities) . '.' . $print_engine->getExportType()->getFileExtension();
+    }
+    $print_engine->getPrintObject()->render();
+    // Save the file.
+    return file_unmanaged_save_data($print_engine->getBlob(), $uri, FILE_EXISTS_REPLACE);
+  }
+
+  /**
+   * Configure the print engine with the passed entities.
+   *
+   * @param array $entities
+   *   An array of entities.
+   * @param \Drupal\entity_print\Plugin\PrintEngineInterface $print_engine
+   *   The print engine.
+   * @param bool $use_default_css
+   *   TRUE if we want the default CSS included.
+   *
+   * @return \Drupal\entity_print\Renderer\RendererInterface
+   *   A print renderer.
+   */
+  protected function prepareRenderer(array $entities, PrintEngineInterface $print_engine, $use_default_css) {
+    if (empty($entities)) {
+      throw new \InvalidArgumentException('You must pass at least 1 entity');
+    }
+
+    $renderer = $this->rendererFactory->create($entities);
+    $content = array_map([$renderer, 'render'], $entities);
+    
+    $first_entity = reset($entities);
+    $render = [
+      '#theme' => 'entity_print__' . $first_entity->getEntityTypeId() . '__' . $first_entity->bundle(),
+      '#title' => $this->t('View @type', ['@type' => $print_engine->getExportType()->label()]),
+      '#content' => $content,
+      '#attached' => [],
+    ];
+
+    $print_engine->addPage($renderer->generateHtml($entities, $render, $use_default_css, TRUE));
+
+    return $renderer;
+  }
+
 }
