diff --git a/config/install/entity_print.settings.yml b/config/install/entity_print.settings.yml
index 68ac2ca..4b47d63 100644
--- a/config/install/entity_print.settings.yml
+++ b/config/install/entity_print.settings.yml
@@ -1,3 +1,4 @@
 default_css: true
 force_download: true
-pdf_engine: dompdf
+print_engines:
+  pdf_engine: dompdf
diff --git a/config/install/system.action.entity_print_download_action.yml b/config/install/system.action.entity_print_pdf_download_action.yml
similarity index 61%
rename from config/install/system.action.entity_print_download_action.yml
rename to config/install/system.action.entity_print_pdf_download_action.yml
index 99a1291..13e10dc 100644
--- a/config/install/system.action.entity_print_download_action.yml
+++ b/config/install/system.action.entity_print_pdf_download_action.yml
@@ -3,8 +3,8 @@ status: true
 dependencies:
   module:
     - entity_print
-id: entity_print_download_action
+id: entity_print_pdf_download_action
 label: 'Download PDF'
 type: node
-plugin: entity_print_download_action
+plugin: entity_print_pdf_download_action
 configuration: {  }
diff --git a/config/schema/entity_print.schema.yml b/config/schema/entity_print.schema.yml
index 7a6b926..b1e5982 100644
--- a/config/schema/entity_print.schema.yml
+++ b/config/schema/entity_print.schema.yml
@@ -7,23 +7,27 @@ entity_print.settings:
       label: 'Enable the default CSS.'
     force_download:
       type: boolean
-      label: 'Force download of PDF'
-    pdf_engine:
-      type: string
-      label: 'The plugin id of the PDF engine to use.'
+      label: 'Force download of Print'
+    print_engines:
+      type: mapping
+      label: 'The plugin id of the Print engine to use.'
+      mapping:
+        pdf_engine:
+          type: string
+          label: 'The plugin id of the PDF engine to use.'
 
-entity_print.pdf_engine.*:
+entity_print.print_engine.*:
   type: config_entity
-  label: 'PDF Engine'
+  label: 'Print Engine'
   mapping:
     id:
       type: string
-      label: 'PDF Engine Id'
+      label: 'Print Engine Id'
     settings:
-      type: entity_print_pdf_engine.[%parent.id]
-      label: 'Settings for the PDF Engine.'
+      type: entity_print_print_engine.[%parent.id]
+      label: 'Settings for the Print Engine.'
 
-entity_print_pdf_engine.dompdf:
+entity_print_print_engine.dompdf:
   type: mapping
   label: 'Dompdf specific settings'
   mapping:
@@ -37,7 +41,7 @@ entity_print_pdf_engine.dompdf:
       type: boolean
       label: 'Enable remote urls'
 
-entity_print_pdf_engine.phpwkhtmltopdf:
+entity_print_print_engine.phpwkhtmltopdf:
   type: mapping
   label: 'PHP Wkhtmltopdf'
   type: mapping
@@ -55,6 +59,6 @@ core.entity_view_display.*.*.*.third_party.entity_print:
       type: string
       label: 'Label for view link'
 
-action.configuration.entity_print_download_action:
+action.configuration.entity_print_pdf_download_action:
   type: action_configuration_default
   label: 'Download entities as a PDF'
diff --git a/entity_print.install b/entity_print.install
index ecfcb67..b5d9681 100644
--- a/entity_print.install
+++ b/entity_print.install
@@ -33,10 +33,10 @@ function entity_print_requirements($phase) {
     return $requirements;
   }
 
-  $definitions = \Drupal::service('plugin.manager.entity_print.pdf_engine')->getDefinitions();
+  $definitions = \Drupal::service('plugin.manager.entity_print.print_engine')->getDefinitions();
   $has_one_engine = FALSE;
   foreach ($definitions as $definition) {
-    /** @var \Drupal\entity_print\Plugin\PdfEngineInterface $class */
+    /** @var \Drupal\entity_print\Plugin\PrintEngineInterface $class */
     $class = $definition['class'];
     if ($class::dependenciesAvailable()) {
       $has_one_engine = TRUE;
diff --git a/entity_print.module b/entity_print.module
index 88e7373..b0a2b9a 100644
--- a/entity_print.module
+++ b/entity_print.module
@@ -5,6 +5,7 @@
  * Print any entity.
  */
 
+use Drupal\Core\Config\Config;
 use Drupal\Core\Entity\Display\EntityViewDisplayInterface;
 use Drupal\Core\Entity\EntityInterface;
 use Drupal\Core\Form\FormStateInterface;
@@ -36,7 +37,7 @@ function entity_print_entity_extra_field_info_alter(&$info) {
     foreach ($entity_info as &$bundle_info) {
       $bundle_info['display']['entity_print_view'] = [
         'label' => t('Entity Print'),
-        'description' => t('Provides a link to view the PDF version of the entity'),
+        'description' => t('Provides a link to view the Print version of the entity'),
         'weight' => 0,
         'visible' => FALSE,
       ];
@@ -48,17 +49,22 @@ function entity_print_entity_extra_field_info_alter(&$info) {
  * Implements hook_entity_view_alter().
  */
 function entity_print_entity_view_alter(array &$build, EntityInterface $entity, EntityViewDisplayInterface $display) {
-  if ($display->getComponent('entity_print_view')) {
-    $route_params = [
-      'entity_type' => $entity->getEntityTypeId(),
-      'entity_id' => $entity->id(),
-    ];
-    $build['entity_print_view'] = Link::createFromRoute($display->getThirdPartySetting('entity_print', 'label', t('View PDF')), 'entity_print.view', $route_params)
-      ->toRenderable();
+  $config = \Drupal::config('entity_print.settings');
+
+  foreach ($config->get('print_engines') as $export_type => $print_engine) {
+    if ($display->getComponent('entity_print_view')) {
+      $route_params = [
+        'entity_type' => $entity->getEntityTypeId(),
+        'entity_id' => $entity->id(),
+        'export_type' => trim($export_type, '_engine'),
+      ];
+      $build['entity_print_view'] = Link::createFromRoute($display->getThirdPartySetting('entity_print', 'label', t('View :export_type', [':export_type' => $export_type])), 'entity_print.view', $route_params)
+        ->toRenderable();
 
-    // Add the access control.
-    $build['entity_print_view']['#access'] = \Drupal::accessManager()
-      ->checkNamedRoute('entity_print.view', $route_params);
+      // Add the access control.
+      $build['entity_print_view']['#access'] = \Drupal::accessManager()
+        ->checkNamedRoute('entity_print.view', $route_params);
+    }
   }
 }
 
diff --git a/entity_print.post_update.php b/entity_print.post_update.php
index d23c06d..662128c 100644
--- a/entity_print.post_update.php
+++ b/entity_print.post_update.php
@@ -1,13 +1,13 @@
 <?php
 
-use Drupal\entity_print\Entity\PdfEngine;
+use Drupal\entity_print\Entity\PrintEngine;
 
 /**
  * Sets the new default configuration for dompdf.
  */
 function entity_print_post_update_new_dompdf_configuration() {
-  /** @var \Drupal\entity_print\Entity\PdfEngine $engine_config */
-  if ($engine_config = PdfEngine::load('dompdf')) {
+  /** @var \Drupal\entity_print\Entity\PrintEngine $engine_config */
+  if ($engine_config = PrintEngine::load('dompdf')) {
     $settings = $engine_config->getSettings();
     $settings['default_paper_size'] = 'letter';
     $engine_config->setSettings($settings);
@@ -20,11 +20,11 @@ function entity_print_post_update_new_dompdf_configuration() {
  */
 function entity_print_post_update_migrate_config() {
   $config = \Drupal::configFactory()->getEditable('entity_print.settings');
-  if ($plugin_id = $config->get('pdf_engine')) {
+  if ($plugin_id = $config->get('print_engine')) {
     /** @var \Drupal\entity_print\Plugin\EntityPrintPluginManager $plugin_manager */
-    $plugin_manager = \Drupal::service('plugin.manager.entity_print.pdf_engine');
+    $plugin_manager = \Drupal::service('plugin.manager.entity_print.print_engine');
     $definition = $plugin_manager->getDefinition($plugin_id);
-    /** @var \Drupal\entity_print\Plugin\PdfEngineInterface $class */
+    /** @var \Drupal\entity_print\Plugin\PrintEngineInterface $class */
     $class = $definition['class'];
 
     if ($class::dependenciesAvailable()) {
@@ -39,7 +39,7 @@ function entity_print_post_update_migrate_config() {
       }
       // Create the new config entity.
       \Drupal::entityTypeManager()
-        ->getStorage('pdf_engine')
+        ->getStorage('print_engine')
         ->create($values)
         ->save();
 
diff --git a/entity_print.routing.yml b/entity_print.routing.yml
index 9b6f75e..90d0490 100644
--- a/entity_print.routing.yml
+++ b/entity_print.routing.yml
@@ -1,15 +1,15 @@
 entity_print.view:
-  path: 'entityprint/{entity_type}/{entity_id}'
+  path: 'entityprint/{export_type}/{entity_type}/{entity_id}'
   defaults:
-    _controller: '\Drupal\entity_print\Controller\EntityPrintController::viewPdf'
+    _controller: '\Drupal\entity_print\Controller\EntityPrintController::viewPrint'
     _title: 'Entity Print'
   requirements:
     _custom_access: '\Drupal\entity_print\Controller\EntityPrintController::checkAccess'
 
 entity_print.view.debug:
-  path: 'entityprint/{entity_type}/{entity_id}/debug'
+  path: 'entityprint/{export_type}/{entity_type}/{entity_id}/debug'
   defaults:
-    _controller: '\Drupal\entity_print\Controller\EntityPrintController::viewPdfDebug'
+    _controller: '\Drupal\entity_print\Controller\EntityPrintController::viewPrintDebug'
     _title: 'Entity Print Debug'
   requirements:
     _custom_access: '\Drupal\entity_print\Controller\EntityPrintController::checkAccess'
diff --git a/entity_print.services.yml b/entity_print.services.yml
index 93bb3bf..a35597a 100644
--- a/entity_print.services.yml
+++ b/entity_print.services.yml
@@ -1,9 +1,9 @@
 services:
-  plugin.manager.entity_print.pdf_engine:
+  plugin.manager.entity_print.print_engine:
     class: Drupal\entity_print\Plugin\EntityPrintPluginManager
     arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@event_dispatcher']
-  entity_print.pdf_manager:
-    class: Drupal\entity_print\EntityPrintPdfBuilder
+  entity_print.print_manager:
+    class: Drupal\entity_print\PrintBuilder
     arguments: ['@entity_print.renderer_factory', '@event_dispatcher']
   entity_print.renderer_factory:
     class: Drupal\entity_print\Renderer\RendererFactory
diff --git a/src/Annotation/PdfEngine.php b/src/Annotation/PdfEngine.php
deleted file mode 100644
index 3b74537..0000000
--- a/src/Annotation/PdfEngine.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\entity_print\Annotation\PdfEngine.
- */
-
-namespace Drupal\entity_print\Annotation;
-
-use Drupal\Component\Annotation\Plugin;
-
-/**
- * The PdfEngine annotation.
- *
- * @Annotation
- */
-class PdfEngine extends Plugin {
-
-  /**
-   * The unique Id of the Pdf engine implementation.
-   *
-   * @var string
-   */
-  public $id;
-
-  /**
-   * The human readable name of the Pdf engine implementation.
-   *
-   * @var string
-   */
-  public $label;
-
-}
diff --git a/src/Annotation/PrintEngine.php b/src/Annotation/PrintEngine.php
new file mode 100644
index 0000000..0666ae9
--- /dev/null
+++ b/src/Annotation/PrintEngine.php
@@ -0,0 +1,35 @@
+<?php
+
+namespace Drupal\entity_print\Annotation;
+
+use Drupal\Component\Annotation\Plugin;
+
+/**
+ * The PrintEngine annotation.
+ *
+ * @Annotation
+ */
+class PrintEngine extends Plugin {
+
+  /**
+   * The unique Id of the Print engine implementation.
+   *
+   * @var string
+   */
+  public $id;
+
+  /**
+   * The human readable name of the Print engine implementation.
+   *
+   * @var string
+   */
+  public $label;
+
+  /**
+   * The filetype to be exported to.
+   *
+   * @var string
+   */
+  public $export_type;
+
+}
diff --git a/src/Controller/EntityPrintController.php b/src/Controller/EntityPrintController.php
index 8c4def6..d4bdf47 100644
--- a/src/Controller/EntityPrintController.php
+++ b/src/Controller/EntityPrintController.php
@@ -1,9 +1,5 @@
 <?php
 
-/**
- * @file
- */
-
 namespace Drupal\entity_print\Controller;
 
 use Drupal\Component\Render\FormattableMarkup;
@@ -12,8 +8,8 @@ use Drupal\Core\Controller\ControllerBase;
 use Drupal\Core\Access\AccessResult;
 use Drupal\Core\Entity\EntityTypeManagerInterface;
 use Drupal\Core\Render\HtmlResponse;
-use Drupal\entity_print\PdfBuilderInterface;
-use Drupal\entity_print\PdfEngineException;
+use Drupal\entity_print\PrintBuilderInterface;
+use Drupal\entity_print\PrintEngineException;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 use Symfony\Component\HttpFoundation\RedirectResponse;
 use Symfony\Component\HttpFoundation\Response;
@@ -23,18 +19,18 @@ use Symfony\Component\HttpFoundation\StreamedResponse;
 class EntityPrintController extends ControllerBase {
 
   /**
-   * The plugin manager for our PDF engines.
+   * The plugin manager for our Print engines.
    *
    * @var \Drupal\entity_print\Plugin\EntityPrintPluginManager
    */
   protected $pluginManager;
 
   /**
-   * The PDF builder.
+   * The Print builder.
    *
-   * @var \Drupal\entity_print\PdfBuilderInterface
+   * @var \Drupal\entity_print\PrintBuilderInterface
    */
-  protected $pdfBuilder;
+  protected $printBuilder;
 
   /**
    * The Entity Type manager.
@@ -46,9 +42,9 @@ class EntityPrintController extends ControllerBase {
   /**
    * {@inheritdoc}
    */
-  public function __construct(EntityPrintPluginManager $plugin_manager, PdfBuilderInterface $pdf_builder, EntityTypeManagerInterface $entity_type_manager) {
+  public function __construct(EntityPrintPluginManager $plugin_manager, PrintBuilderInterface $print_builder, EntityTypeManagerInterface $entity_type_manager) {
     $this->pluginManager = $plugin_manager;
-    $this->pdfBuilder = $pdf_builder;
+    $this->printBuilder = $print_builder;
     $this->entityTypeManager = $entity_type_manager;
   }
 
@@ -57,47 +53,50 @@ class EntityPrintController extends ControllerBase {
    */
   public static function create(ContainerInterface $container) {
     return new static(
-      $container->get('plugin.manager.entity_print.pdf_engine'),
-      $container->get('entity_print.pdf_manager'),
+      $container->get('plugin.manager.entity_print.print_engine'),
+      $container->get('entity_print.print_manager'),
       $container->get('entity_type.manager')
     );
   }
 
   /**
-   * Output an entity as a PDF.
+   * Output an entity as a Print.
    *
+   * @param string $export_type
+   *   The export type.
    * @param string $entity_type
    *   The entity type.
    * @param int $entity_id
    *   The entity id.
    *
    * @return \Symfony\Component\HttpFoundation\Response
-   *   The response object on error otherwise the PDF is sent.
+   *   The response object on error otherwise the Print is sent.
    */
-  public function viewPdf($entity_type, $entity_id) {
-    // Create the PDF engine plugin.
+  public function viewPrint($export_type, $entity_type, $entity_id) {
+    // Create the Print engine plugin.
     $config = $this->config('entity_print.settings');
     $entity = $this->entityTypeManager->getStorage($entity_type)->load($entity_id);
+    $config_engine = 'print_engines.' . $export_type . '_engine';
 
     try {
-      $pdf_engine = $this->pluginManager->createInstance($config->get('pdf_engine'));
+      $print_engine = $this->pluginManager->createInstance($config->get($config_engine));
     }
-    catch (PdfEngineException $e) {
+    catch (PrintEngineException $e) {
       // Build a safe markup string using Xss::filter() so that the instructions
       // for installing dependencies can contain quotes.
-      drupal_set_message(new FormattableMarkup('Error generating PDF: ' . Xss::filter($e->getMessage()), []), 'error');
+      drupal_set_message(new FormattableMarkup('Error generating Print: ' . Xss::filter($e->getMessage()), []), 'error');
 
       return new RedirectResponse($entity->toUrl()->toString());
     }
 
-    return (new StreamedResponse(function() use ($entity, $pdf_engine, $config) {
-      // The PDF is sent straight to the browser.
-      $this->pdfBuilder->getEntityRenderedAsPdf($entity, $pdf_engine, $config->get('force_download'), $config->get('default_css'));
+    return (new StreamedResponse(function() use ($entity, $print_engine, $config) {
+      // The Print is sent straight to the browser.
+      $this->printBuilder->printSingle($entity, $print_engine, $config->get('force_download'), $config->get('default_css'));
     }))->send();
   }
 
   /**
-   * A debug callback for styling up the PDF.
+   * A debug callback for styling up the Print.
    *
    * @param string $entity_type
    *   The entity type.
@@ -107,14 +106,14 @@ class EntityPrintController extends ControllerBase {
    * @return \Symfony\Component\HttpFoundation\Response
    *   The response object.
    */
-  public function viewPdfDebug($entity_type, $entity_id) {
+  public function viewPrintDebug($entity_type, $entity_id) {
     $entity = $this->entityTypeManager->getStorage($entity_type)->load($entity_id);
     try {
       $use_default_css = $this->config('entity_print.settings')->get('default_css');
-      return new Response($this->pdfBuilder->getEntityRenderedAsHtml($entity, $use_default_css, $this->config('system.performance')->get('css.preprocess')));
+      return new Response($this->printBuilder->printHtml($entity, $use_default_css, $this->config('system.performance')->get('css.preprocess')));
     }
-    catch (PdfEngineException $e) {
-      drupal_set_message(new FormattableMarkup('Error generating PDF: ' . Xss::filter($e->getMessage()), []), 'error');
+    catch (PrintEngineException $e) {
+      drupal_set_message(new FormattableMarkup('Error generating Print: ' . Xss::filter($e->getMessage()), []), 'error');
       return new RedirectResponse($entity->toUrl()->toString());
     }
   }
@@ -125,6 +124,8 @@ class EntityPrintController extends ControllerBase {
    * We need to validate that the user is allowed to access this entity also the
    * print version.
    *
+   * @param string $export_type
+   *   The export type.
    * @param string $entity_type
    *   The entity type.
    * @param int $entity_id
@@ -133,7 +134,7 @@ class EntityPrintController extends ControllerBase {
    * @return bool
    *   TRUE if they have access otherwise FALSE.
    */
-  public function checkAccess($entity_type, $entity_id) {
+  public function checkAccess($export_type, $entity_type, $entity_id) {
     $account = $this->currentUser();
 
     // Invalid storage type.
diff --git a/src/Entity/PdfEngine.php b/src/Entity/PrintEngine.php
similarity index 52%
rename from src/Entity/PdfEngine.php
rename to src/Entity/PrintEngine.php
index 1e2db4e..6ff5c4f 100644
--- a/src/Entity/PdfEngine.php
+++ b/src/Entity/PrintEngine.php
@@ -2,7 +2,7 @@
 
 /**
  * @file
- * Contains \Drupal\entity_print\Entity\PdfEngine.
+ * Contains \Drupal\entity_print\Entity\PrintEngine.
  */
 
 namespace Drupal\entity_print\Entity;
@@ -11,12 +11,12 @@ use Drupal\Core\Config\Entity\ConfigEntityBase;
 use Drupal\Core\Plugin\DefaultSingleLazyPluginCollection;
 
 /**
- * Defines the Pdf Engine specific configuration.
+ * Defines the Print Engine specific configuration.
  *
  * @ConfigEntityType(
- *   id = "pdf_engine",
- *   label = @Translation("PDF Engine"),
- *   config_prefix = "pdf_engine",
+ *   id = "print_engine",
+ *   label = @Translation("Print Engine"),
+ *   config_prefix = "print_engine",
  *   entity_keys = {
  *     "id" = "id"
  *   },
@@ -27,24 +27,24 @@ use Drupal\Core\Plugin\DefaultSingleLazyPluginCollection;
  *   }
  * )
  */
-class PdfEngine extends ConfigEntityBase implements PdfEngineInterface {
+class PrintEngine extends ConfigEntityBase implements PrintEngineInterface {
 
   /**
-   * The plugin collection for one PDF engine.
+   * The plugin collection for one Print engine.
    *
    * @var \Drupal\Core\Plugin\DefaultSingleLazyPluginCollection
    */
-  protected $pdfEnginePluginCollection;
+  protected $printEnginePluginCollection;
 
   /**
-   * An array of plugin settings for this specific PDF engine.
+   * An array of plugin settings for this specific Print engine.
    *
    * @var array
    */
   protected $settings = [];
 
   /**
-   * The id of the Pdf engine plugin.
+   * The id of the Print engine plugin.
    *
    * @var string
    */
@@ -68,18 +68,18 @@ class PdfEngine extends ConfigEntityBase implements PdfEngineInterface {
   /**
    * {@inheritdoc}
    */
-  public function getPdfEnginePluginCollection() {
-    if (!$this->pdfEnginePluginCollection) {
-      $this->pdfEnginePluginCollection = new DefaultSingleLazyPluginCollection($this->getPdfEnginePluginManager(), $this->id, $this->settings);
+  public function getPrintEnginePluginCollection() {
+    if (!$this->printEnginePluginCollection) {
+      $this->printEnginePluginCollection = new DefaultSingleLazyPluginCollection($this->getPrintEnginePluginManager(), $this->id, $this->settings);
     }
-    return $this->pdfEnginePluginCollection;
+    return $this->printEnginePluginCollection;
   }
 
   /**
    * {@inheritdoc}
    */
   public function getPluginCollections() {
-    return ['settings' => $this->getPdfEnginePluginCollection()];
+    return ['settings' => $this->getPrintEnginePluginCollection()];
   }
 
   /**
@@ -88,8 +88,8 @@ class PdfEngine extends ConfigEntityBase implements PdfEngineInterface {
    * @return \Drupal\entity_print\Plugin\EntityPrintPluginManager
    *   The plugin manager instance.
    */
-  protected function getPdfEnginePluginManager() {
-    return \Drupal::service('plugin.manager.entity_print.pdf_engine');
+  protected function getPrintEnginePluginManager() {
+    return \Drupal::service('plugin.manager.entity_print.print_engine');
   }
 
 }
diff --git a/src/Entity/PdfEngineInterface.php b/src/Entity/PrintEngineInterface.php
similarity index 52%
rename from src/Entity/PdfEngineInterface.php
rename to src/Entity/PrintEngineInterface.php
index 17d3e06..0d465df 100644
--- a/src/Entity/PdfEngineInterface.php
+++ b/src/Entity/PrintEngineInterface.php
@@ -1,7 +1,7 @@
 <?php
 /**
  * @file
- * Contains \Drupal\entity_print\Entity\PdfEngineInterface.
+ * Contains \Drupal\entity_print\Entity\PrintEngineInterface.
  */
 
 namespace Drupal\entity_print\Entity;
@@ -10,28 +10,28 @@ use Drupal\Core\Entity\EntityWithPluginCollectionInterface;
 use Drupal\Core\Config\Entity\ConfigEntityInterface;
 
 /**
- * An interface for our config entity storage for PDF engines.
+ * An interface for our config entity storage for Print engines.
  */
-interface PdfEngineInterface extends ConfigEntityInterface, EntityWithPluginCollectionInterface {
+interface PrintEngineInterface extends ConfigEntityInterface, EntityWithPluginCollectionInterface {
 
   /**
    * Gets a single lazy plugin collection.
    *
    * @return \Drupal\Core\Plugin\DefaultSingleLazyPluginCollection
-   *   The plugin collection for our PDF Engine plugin.
+   *   The plugin collection for our Print Engine plugin.
    */
-  public function getPdfEnginePluginCollection();
+  public function getPrintEnginePluginCollection();
 
   /**
-   * Gets the PDF engine settings.
+   * Gets the Print engine settings.
    *
    * @return array
-   *   The PDF Engine settings.
+   *   The Print Engine settings.
    */
   public function getSettings();
 
   /**
-   * Sets the PDF engine settings.
+   * Sets the Print engine settings.
    *
    * @return $this
    *   The config entity.
diff --git a/src/Event/PdfEventBase.php b/src/Event/PdfEventBase.php
deleted file mode 100644
index b0589d1..0000000
--- a/src/Event/PdfEventBase.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-namespace Drupal\entity_print\Event;
-
-use Drupal\entity_print\Plugin\PdfEngineInterface;
-use Symfony\Component\EventDispatcher\Event;
-
-abstract class PdfEventBase extends Event {
-
-  /**
-   * @var \Drupal\entity_print\Plugin\PdfEngineInterface
-   */
-  protected $pdfEngine;
-
-  /**
-   * The PDF Engine event base class.
-   *
-   * @param \Drupal\entity_print\Plugin\PdfEngineInterface $pdf_engine
-   *   The PDF Engine.
-   */
-  public function __construct(PdfEngineInterface $pdf_engine) {
-    $this->pdfEngine = $pdf_engine;
-  }
-
-  /**
-   * Gets the PDF Engine plugin that will print the PDF.
-   *
-   * @return \Drupal\entity_print\Plugin\PdfEngineInterface
-   *   The PDF Engine.
-   */
-  public function getPdfEngine() {
-    return $this->pdfEngine;
-  }
-
-}
diff --git a/src/Event/PreSendPdfMultipleEvent.php b/src/Event/PreSendPdfMultipleEvent.php
deleted file mode 100644
index 8d190db..0000000
--- a/src/Event/PreSendPdfMultipleEvent.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-namespace Drupal\entity_print\Event;
-
-use Drupal\entity_print\Plugin\PdfEngineInterface;
-
-/**
- * The PreSendPdfMultipleEvent class.
- */
-class PreSendPdfMultipleEvent extends PdfEventBase {
-
-  /**
-   * @var \Drupal\Core\Entity\EntityInterface
-   */
-  protected $entities;
-
-  /**
-   * PreSendPdfEvent constructor.
-   *
-   * @param \Drupal\entity_print\Plugin\PdfEngineInterface $pdf_engine
-   *   The PDF Engine.
-   * @param \Drupal\Core\Entity\EntityInterface[] $entities
-   *   The entities to print.
-   */
-  public function __construct(PdfEngineInterface $pdf_engine, array $entities) {
-    parent::__construct($pdf_engine);
-    $this->entities = $entities;
-  }
-
-  /**
-   * Gets the entities being printed to PDF.
-   *
-   * @return \Drupal\Core\Entity\EntityInterface[]
-   *   The content entities.
-   */
-  public function getEntities() {
-    return $this->entities;
-  }
-
-}
diff --git a/src/Event/PreSendPdfEvent.php b/src/Event/PreSendPrintEvent.php
similarity index 50%
rename from src/Event/PreSendPdfEvent.php
rename to src/Event/PreSendPrintEvent.php
index eefb72c..bd54b38 100644
--- a/src/Event/PreSendPdfEvent.php
+++ b/src/Event/PreSendPrintEvent.php
@@ -3,12 +3,12 @@
 namespace Drupal\entity_print\Event;
 
 use Drupal\Core\Entity\EntityInterface;
-use Drupal\entity_print\Plugin\PdfEngineInterface;
+use Drupal\entity_print\Plugin\PrintEngineInterface;
 
 /**
- * The PreSendPdfEvent class.
+ * The PreSendPrintEvent class.
  */
-class PreSendPdfEvent extends PdfEventBase {
+class PreSendPrintEvent extends PrintEventBase {
 
   /**
    * @var \Drupal\Core\Entity\EntityInterface
@@ -16,20 +16,20 @@ class PreSendPdfEvent extends PdfEventBase {
   protected $entity;
 
   /**
-   * PreSendPdfEvent constructor.
+   * PreSendPrintEvent constructor.
    *
-   * @param \Drupal\entity_print\Plugin\PdfEngineInterface $pdf_engine
-   *   The PDF Engine.
+   * @param \Drupal\entity_print\Plugin\PrintEngineInterface $print_engine
+   *   The Print Engine.
    * @param \Drupal\Core\Entity\EntityInterface $entity
    *   The entity to print.
    */
-  public function __construct(PdfEngineInterface $pdf_engine, EntityInterface $entity) {
-    parent::__construct($pdf_engine);
+  public function __construct(PrintEngineInterface $print_engine, EntityInterface $entity) {
+    parent::__construct($print_engine);
     $this->entity = $entity;
   }
 
   /**
-   * Gets the entity that is being printed to PDF.
+   * Gets the entity that is being printed to Print.
    *
    * @return \Drupal\Core\Entity\EntityInterface
    *   The content entity.
diff --git a/src/Event/PreSendPrintMultipleEvent.php b/src/Event/PreSendPrintMultipleEvent.php
new file mode 100644
index 0000000..64228db
--- /dev/null
+++ b/src/Event/PreSendPrintMultipleEvent.php
@@ -0,0 +1,40 @@
+<?php
+
+namespace Drupal\entity_print\Event;
+
+use Drupal\entity_print\Plugin\PrintEngineInterface;
+
+/**
+ * The PreSendPrintMultipleEvent class.
+ */
+class PreSendPrintMultipleEvent extends PrintEventBase {
+
+  /**
+   * @var \Drupal\Core\Entity\EntityInterface
+   */
+  protected $entities;
+
+  /**
+   * PreSendPrintEvent constructor.
+   *
+   * @param \Drupal\entity_print\Plugin\PrintEngineInterface $print_engine
+   *   The Print Engine.
+   * @param \Drupal\Core\Entity\EntityInterface[] $entities
+   *   The entities to print.
+   */
+  public function __construct(PrintEngineInterface $print_engine, array $entities) {
+    parent::__construct($print_engine);
+    $this->entities = $entities;
+  }
+
+  /**
+   * Gets the entities being printed to Print.
+   *
+   * @return \Drupal\Core\Entity\EntityInterface[]
+   *   The content entities.
+   */
+  public function getEntities() {
+    return $this->entities;
+  }
+
+}
diff --git a/src/Event/PdfCssAlterEvent.php b/src/Event/PrintCssAlterEvent.php
similarity index 92%
rename from src/Event/PdfCssAlterEvent.php
rename to src/Event/PrintCssAlterEvent.php
index 8a5bf79..e1b3a9d 100644
--- a/src/Event/PdfCssAlterEvent.php
+++ b/src/Event/PrintCssAlterEvent.php
@@ -4,7 +4,7 @@ namespace Drupal\entity_print\Event;
 
 use Symfony\Component\EventDispatcher\Event;
 
-class PdfCssAlterEvent extends Event {
+class PrintCssAlterEvent extends Event {
 
   /**
    * The renderable array.
@@ -21,7 +21,7 @@ class PdfCssAlterEvent extends Event {
   protected $entities;
 
   /**
-   * PdfCssAlterEvent constructor.
+   * PrintCssAlterEvent constructor.
    *
    * @param array $build
    *   The renderable array.
diff --git a/src/Event/PrintEventBase.php b/src/Event/PrintEventBase.php
new file mode 100644
index 0000000..e152e26
--- /dev/null
+++ b/src/Event/PrintEventBase.php
@@ -0,0 +1,35 @@
+<?php
+
+namespace Drupal\entity_print\Event;
+
+use Drupal\entity_print\Plugin\PrintEngineInterface;
+use Symfony\Component\EventDispatcher\Event;
+
+abstract class PrintEventBase extends Event {
+
+  /**
+   * @var \Drupal\entity_print\Plugin\PrintEngineInterface
+   */
+  protected $printEngine;
+
+  /**
+   * The Print Engine event base class.
+   *
+   * @param \Drupal\entity_print\Plugin\PrintEngineInterface $print_engine
+   *   The Print Engine.
+   */
+  public function __construct(PrintEngineInterface $print_engine) {
+    $this->printEngine = $print_engine;
+  }
+
+  /**
+   * Gets the Print Engine plugin that will print the Print.
+   *
+   * @return \Drupal\entity_print\Plugin\PrintEngineInterface
+   *   The Print Engine.
+   */
+  public function getPrintEngine() {
+    return $this->printEngine;
+  }
+
+}
diff --git a/src/Event/PdfEvents.php b/src/Event/PrintEvents.php
similarity index 57%
rename from src/Event/PdfEvents.php
rename to src/Event/PrintEvents.php
index 80859ad..494c88b 100644
--- a/src/Event/PdfEvents.php
+++ b/src/Event/PrintEvents.php
@@ -3,47 +3,47 @@
 namespace Drupal\entity_print\Event;
 
 /**
- * The events related to PDF Engines.
+ * The events related to Print Engines.
  */
-final class PdfEvents {
+final class PrintEvents {
 
   /**
-   * Name of the event fired when retrieving a PDF engine configuration.
+   * Name of the event fired when retrieving a Print engine configuration.
    *
-   * This event allows you to change the configuration of a PDF Engine
+   * This event allows you to change the configuration of a Print Engine
    * implementation right before the plugin manager creates the plugin instance.
    *
    * @Event
    *
    * @see \Symfony\Component\EventDispatcher\GenericEvent
    */
-  const CONFIGURATION_ALTER = 'entity_print.pdf_engine.configuration_alter';
+  const CONFIGURATION_ALTER = 'entity_print.print_engine.configuration_alter';
 
   /**
-   * Name of the event fired right before the PDF is sent to the page.
+   * Name of the event fired right before the Print is sent to the page.
    *
-   * At this point, the HTML has been rendered and added as a page on the PDF
+   * At this point, the HTML has been rendered and added as a page on the Print
    * engine. The only thing left to happen is generate the filename and stream
-   * the PDF data to the page.
+   * the Print data to the page.
    *
    * @Event
    *
-   * @see \Drupal\entity_print\Event\PreSendPdfEvent
+   * @see \Drupal\entity_print\Event\PreSendPrintEvent
    */
-  const PRE_SEND = 'entity_print.pdf_engine.pre_send';
+  const PRE_SEND = 'entity_print.print_engine.pre_send';
 
   /**
-   * The name of the event fired when rendering multiple entities onto one PDF.
+   * The name of the event fired when rendering multiple entities onto one Print.
    *
-   * This event fires from the Views plugin when downloading multiple PDF's at
+   * This event fires from the Views plugin when downloading multiple Print's at
    * once.
    *
    * @Event
    *
-   * @see \Drupal\entity_print\Event\PreSendPdfMultipleEvent
-   * @see \Drupal\entity_print\Plugin\Action\PdfDownload
+   * @see \Drupal\entity_print\Event\PreSendPrintMultipleEvent
+   * @see \Drupal\entity_print\Plugin\Action\PrintDownload
    */
-  const PRE_SEND_MULTIPLE = 'entity_print.pdf_engine.pre_send_multiple';
+  const PRE_SEND_MULTIPLE = 'entity_print.print_engine.pre_send_multiple';
 
   /**
    * Name of the event fired when building CSS assets.
@@ -58,9 +58,9 @@ final class PdfEvents {
    *
    * @Event
    *
-   * @see \Drupal\entity_print\Event\PdfCssAlterEvent
+   * @see \Drupal\entity_print\Event\PrintCssAlterEvent
    */
-  const CSS_ALTER = 'entity_print.pdf.css_alter';
+  const CSS_ALTER = 'entity_print.print.css_alter';
 
   /**
    * This event is fired right after the HTML has been generated.
@@ -71,8 +71,8 @@ final class PdfEvents {
    *
    * @Event
    *
-   * @see \Drupal\entity_print\Event\PdfHtmlAlterEvent
+   * @see \Drupal\entity_print\Event\PrintHtmlAlterEvent
    */
-  const POST_RENDER = 'entity_print.pdf.html_alter';
+  const POST_RENDER = 'entity_print.print.html_alter';
 
 }
diff --git a/src/Event/PdfHtmlAlterEvent.php b/src/Event/PrintHtmlAlterEvent.php
similarity index 91%
rename from src/Event/PdfHtmlAlterEvent.php
rename to src/Event/PrintHtmlAlterEvent.php
index 72a262a..36d0a28 100644
--- a/src/Event/PdfHtmlAlterEvent.php
+++ b/src/Event/PrintHtmlAlterEvent.php
@@ -4,7 +4,7 @@ namespace Drupal\entity_print\Event;
 
 use Symfony\Component\EventDispatcher\Event;
 
-class PdfHtmlAlterEvent extends Event {
+class PrintHtmlAlterEvent extends Event {
 
   /**
    * The HTML string.
@@ -21,7 +21,7 @@ class PdfHtmlAlterEvent extends Event {
   protected $entities;
 
   /**
-   * PdfHtmlAlterEvent constructor.
+   * PrintHtmlAlterEvent constructor.
    *
    * @param string $html
    *   The generated HTML.
diff --git a/src/EventSubscriber/PostRenderSubscriber.php b/src/EventSubscriber/PostRenderSubscriber.php
index 7646c45..430a927 100644
--- a/src/EventSubscriber/PostRenderSubscriber.php
+++ b/src/EventSubscriber/PostRenderSubscriber.php
@@ -4,8 +4,8 @@ namespace Drupal\entity_print\EventSubscriber;
 
 use Drupal\Component\Utility\Unicode;
 use Drupal\Core\Config\ConfigFactoryInterface;
-use Drupal\entity_print\Event\PdfEvents;
-use Drupal\entity_print\Event\PdfHtmlAlterEvent;
+use Drupal\entity_print\Event\PrintEvents;
+use Drupal\entity_print\Event\PrintHtmlAlterEvent;
 use Masterminds\HTML5;
 use Symfony\Component\EventDispatcher\EventSubscriberInterface;
 use Symfony\Component\HttpFoundation\RequestStack;
@@ -48,13 +48,13 @@ class PostRenderSubscriber implements EventSubscriberInterface {
    * This is a temporary workaround for a core issue.
    * @see https://drupal.org/node/1494670
    *
-   * @param \Drupal\entity_print\Event\PdfHtmlAlterEvent $event
+   * @param \Drupal\entity_print\Event\PrintHtmlAlterEvent $event
    *   The event object.
    */
-  public function postRender(PdfHtmlAlterEvent $event) {
+  public function postRender(PrintHtmlAlterEvent $event) {
     // We only apply the fix to PHP Wkhtmltopdf because the other implementations
     // allow us to specify a base url.
-    if ($this->configFactory->get('pdf_engine') !== 'phpwkhtmltopdf') {
+    if ($this->configFactory->get('print_engine') !== 'phpwkhtmltopdf') {
       return;
     }
 
@@ -91,7 +91,7 @@ class PostRenderSubscriber implements EventSubscriberInterface {
    * {@inheritdoc}
    */
   public static function getSubscribedEvents() {
-    return [PdfEvents::POST_RENDER => 'postRender'];
+    return [PrintEvents::POST_RENDER => 'postRender'];
   }
 
 }
diff --git a/src/Form/SettingsForm.php b/src/Form/SettingsForm.php
index f4816e6..6df0304 100644
--- a/src/Form/SettingsForm.php
+++ b/src/Form/SettingsForm.php
@@ -21,7 +21,7 @@ use Drupal\Core\Form\FormStateInterface;
 class SettingsForm extends ConfigFormBase {
 
   /**
-   * The Pdf engine plugin manager.
+   * The Print engine plugin manager.
    *
    * @var \Drupal\entity_print\Plugin\EntityPrintPluginManager
    */
@@ -56,8 +56,8 @@ class SettingsForm extends ConfigFormBase {
   public static function create(ContainerInterface $container) {
     return new static(
       $container->get('config.factory'),
-      $container->get('plugin.manager.entity_print.pdf_engine'),
-      $container->get('entity_type.manager')->getStorage('pdf_engine')
+      $container->get('plugin.manager.entity_print.print_engine'),
+      $container->get('entity_type.manager')->getStorage('print_engine')
     );
   }
 
@@ -82,18 +82,30 @@ class SettingsForm extends ConfigFormBase {
    */
   public function buildForm(array $form, FormStateInterface $form_state, Request $request = NULL) {
     $disabled_engines = [];
-    $pdf_engines = [];
+    $print_engines = [];
     foreach ($this->pluginManager->getDefinitions() as $plugin_id => $definition) {
-      /** @var \Drupal\entity_print\Plugin\PdfEngineInterface $class */
+      /** @var \Drupal\entity_print\Plugin\PrintEngineInterface $class */
       $class = $definition['class'];
+      $export_type = $definition['export_type'];
+
       if ($class::dependenciesAvailable()) {
-        $pdf_engines[$plugin_id] = $definition['label'];
+        if (array_key_exists($export_type, $print_engines)) {
+          $print_engines[$export_type] = array($plugin_id => $definition['label']);
+        }
+        else {
+          $print_engines[$export_type][$plugin_id] = $definition['label'];
+        }
       }
       else {
-        $disabled_engines[$plugin_id] = $definition['label'];
+        if (array_key_exists($export_type, $disabled_engines)) {
+          $disabled_engines[$export_type][] = array($plugin_id => $definition['label']);
+        }
+        else {
+          $disabled_engines[$export_type][$plugin_id] = $definition['label'];
+        }
 
-        // Show the user which PDF engines are disabled, but only for the page load
-        // not on AJAX requests.
+        // Show the user which Print engines are disabled, but only for
+        // the page load not on AJAX requests.
         if (!$request->isXmlHttpRequest()) {
           drupal_set_message($this->t('@name is not available because it is not configured. @installation.', [
             '@name' => $definition['label'],
@@ -117,19 +129,20 @@ class SettingsForm extends ConfigFormBase {
     $form['entity_print']['force_download'] = [
       '#type' => 'checkbox',
       '#title' => $this->t('Force Download'),
-      '#description' => $this->t('This option will attempt to force the browser to download the PDF with a filename from the node title.'),
+      '#description' => $this->t('This option will attempt to force the browser to download the Print with a filename from the node title.'),
       '#default_value' => $config->get('force_download'),
     ];
 
+    // @TODO, allow other print engines to be configured.
     $form['entity_print']['pdf_engine'] = [
       '#type' => 'select',
-      '#title' => $this->t('Pdf Engine'),
-      '#description' => $this->t('Select the PDF engine to render the PDF'),
-      '#options' => $pdf_engines,
-      '#default_value' => $config->get('pdf_engine'),
+      '#title' => $this->t('PDF Engine'),
+      '#description' => $this->t('Select the PDF engine to render the Print'),
+      '#options' => !empty($print_engines['pdf']) ? $print_engines['pdf'] : [],
+      '#default_value' => $config->get('print_engines.pdf_engine'),
       '#empty_option' => $this->t('- None -'),
       '#ajax' => [
-        'callback' => '::ajaxPluginFormCallback',
+        'callback' => '::ajaxPdfPluginFormCallback',
         'wrapper' => 'pdf-engine-config',
         'effect' => 'fade',
       ],
@@ -139,15 +152,16 @@ class SettingsForm extends ConfigFormBase {
       '#id' => 'pdf-engine-config',
     ];
 
-    // If we have a pdf_engine in the form_state then use that otherwise, fall
+    // If we have a print_engine in the form_state then use that otherwise, fall
     // back to what was saved as this is a fresh form. Check explicitly for NULL
     // in case they selected the None option which is false'y.
-    $plugin_id = !is_null($form_state->getValue('pdf_engine')) ? $form_state->getValue('pdf_engine') : $config->get('pdf_engine');
+    $pdf_plugin_id = !is_null($form_state->getValue('pdf_engine')) ? $form_state->getValue('pdf_engine') : $config->get('print_engines.pdf_engine');
 
     // If we have a plugin id and the plugin hasn't since been disabled then we
     // load the config for the plugin.
-    if ($plugin_id && !in_array($plugin_id, array_keys($disabled_engines), TRUE)) {
-      $form['entity_print']['pdf_engine_config'][$plugin_id] = $this->getPluginForm($plugin_id, $form_state);
+    // @TODO, support all print engine types.
+    if ($pdf_plugin_id && !in_array($pdf_plugin_id, array_keys($disabled_engines['pdf']), TRUE)) {
+      $form['entity_print']['pdf_engine_config'][$pdf_plugin_id] = $this->getPluginForm($pdf_plugin_id, $form_state);
     }
 
     return parent::buildForm($form, $form_state);
@@ -156,7 +170,7 @@ class SettingsForm extends ConfigFormBase {
   /**
    * Ajax form callback.
    */
-  public function ajaxPluginFormCallback(&$form, FormStateInterface $form_state) {
+  public function ajaxPdfPluginFormCallback(&$form, FormStateInterface $form_state) {
     return $form['entity_print']['pdf_engine_config'];
   }
 
@@ -190,8 +204,8 @@ class SettingsForm extends ConfigFormBase {
       // Load the config entity, submit the relevant plugin form and then save
       // it.
       $entity = $this->loadConfigEntity($plugin_id);
-      /** @var \Drupal\entity_print\Plugin\PdfEngineInterface $plugin */
-      $plugin = $entity->getPdfEnginePluginCollection()->get($entity->id());
+      /** @var \Drupal\entity_print\Plugin\PrintEngineInterface $plugin */
+      $plugin = $entity->getPrintEnginePluginCollection()->get($entity->id());
       $plugin->validateConfigurationForm($form, $form_state);
     }
   }
@@ -204,8 +218,8 @@ class SettingsForm extends ConfigFormBase {
       // Load the config entity, submit the relevant plugin form and then save
       // it.
       $entity = $this->loadConfigEntity($plugin_id);
-      /** @var \Drupal\entity_print\Plugin\PdfEngineInterface $plugin */
-      $plugin = $entity->getPdfEnginePluginCollection()->get($entity->id());
+      /** @var \Drupal\entity_print\Plugin\PrintEngineInterface $plugin */
+      $plugin = $entity->getPrintEnginePluginCollection()->get($entity->id());
       $plugin->submitConfigurationForm($form, $form_state);
       $entity->save();
     }
@@ -215,7 +229,7 @@ class SettingsForm extends ConfigFormBase {
     $this->config('entity_print.settings')
       ->set('default_css', $values['default_css'])
       ->set('force_download', $values['force_download'])
-      ->set('pdf_engine', $values['pdf_engine'])
+      ->set('print_engines.pdf_engine', $values['pdf_engine'])
       ->save();
   }
 
@@ -223,9 +237,9 @@ class SettingsForm extends ConfigFormBase {
    * Gets the config entity backing the specified plugin.
    *
    * @param string $plugin_id
-   *   The PDF engine plugin id.
+   *   The Print engine plugin id.
    *
-   * @return \Drupal\entity_print\Entity\PdfEngine
+   * @return \Drupal\entity_print\Entity\PrintEngine
    *   The loaded config object backing the plugin.
    */
   protected function loadConfigEntity($plugin_id) {
diff --git a/src/PdfBuilderInterface.php b/src/PdfBuilderInterface.php
deleted file mode 100644
index ad49111..0000000
--- a/src/PdfBuilderInterface.php
+++ /dev/null
@@ -1,66 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\entity_print\PdfBuilderInterface
- */
-
-namespace Drupal\entity_print;
-
-use Drupal\Core\Entity\EntityInterface;
-use Drupal\entity_print\Plugin\PdfEngineInterface;
-
-/**
- * Interface for the PDF builder service.
- */
-interface PdfBuilderInterface {
-
-  /**
-   * Render any content entity as a PDF.
-   *
-   * @param \Drupal\Core\Entity\EntityInterface $entity
-   *   The content entity to render.
-   * @param \Drupal\entity_print\Plugin\PdfEngineInterface $pdf_engine
-   *   The plugin id of the PDF engine to use.
-   * @param bool $force_download
-   *   (optional) TRUE to try and force the PDF to be downloaded rather than opened.
-   * @param bool $use_default_css
-   *   (optional) TRUE if you want the default CSS included, otherwise FALSE.
-   *
-   * @return string
-   *   FALSE or the PDF content will be sent to the browser.
-   */
-  public function getEntityRenderedAsPdf(EntityInterface $entity, PdfEngineInterface $pdf_engine, $force_download = FALSE, $use_default_css = TRUE);
-
-  /**
-   * Render any content entity as a PDF.
-   *
-   * @param array $entities
-   *   An array of content entities to render, 1 per page.
-   * @param \Drupal\entity_print\Plugin\PdfEngineInterface $pdf_engine
-   *   The plugin id of the PDF engine to use.
-   * @param bool $force_download
-   *   (optional) TRUE to try and force the PDF to be downloaded rather than opened.
-   * @param bool $use_default_css
-   *   (optional) TRUE if you want the default CSS included, otherwise FALSE.
-   *
-   * @return string
-   *   FALSE or the PDF content will be sent to the browser.
-   */
-  public function getMultipleEntitiesRenderedAsPdf(array $entities, PdfEngineInterface $pdf_engine, $force_download = FALSE, $use_default_css = TRUE);
-
-  /**
-   * Get a HTML version of the entity as used for the PDF rendering.
-   *
-   * @param \Drupal\Core\Entity\EntityInterface $entity
-   *   The content entity to render.
-   * @param bool $use_default_css
-   *   TRUE if you want the default CSS included, otherwise FALSE.
-   * @param bool $optimize_css
-   *   TRUE if you the CSS should be compressed otherwise FALSE.
-   *
-   * @return string
-   *   The rendered HTML for this entity, the same as what is used for the PDF.
-   */
-  public function getEntityRenderedAsHtml(EntityInterface $entity, $use_default_css = TRUE, $optimize_css = TRUE);
-}
diff --git a/src/PdfEngineException.php b/src/PdfEngineException.php
deleted file mode 100644
index 865ad67..0000000
--- a/src/PdfEngineException.php
+++ /dev/null
@@ -1,15 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\entity_print\PdfEngineException
- */
-
-namespace Drupal\entity_print;
-
-/**
- * This exception is thrown when a PDF implementation fails to generate a PDF.
- */
-class PdfEngineException extends \Exception {
-
-}
diff --git a/src/Plugin/Action/PdfDownload.php b/src/Plugin/Action/PdfDownload.php
index f09f88a..bbecb05 100644
--- a/src/Plugin/Action/PdfDownload.php
+++ b/src/Plugin/Action/PdfDownload.php
@@ -15,8 +15,8 @@ use Drupal\Core\Action\ActionBase;
 use Drupal\Core\Config\ImmutableConfig;
 use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
 use Drupal\Core\Session\AccountInterface;
-use Drupal\entity_print\PdfBuilderInterface;
-use Drupal\entity_print\PdfEngineException;
+use Drupal\entity_print\PrintBuilderInterface;
+use Drupal\entity_print\PrintEngineException;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 use Symfony\Component\HttpFoundation\StreamedResponse;
 
@@ -24,7 +24,7 @@ use Symfony\Component\HttpFoundation\StreamedResponse;
  * Downloads the PDF for an entity.
  *
  * @Action(
- *   id = "entity_print_download_action",
+ *   id = "entity_print_pdf_download_action",
  *   label = @Translation("Download PDF"),
  *   type = "node"
  * )
@@ -42,11 +42,11 @@ class PdfDownload extends ActionBase implements ContainerFactoryPluginInterface
   protected $accessManager;
 
   /**
-   * The PDF builder service.
+   * The Print builder service.
    *
-   * @var \Drupal\entity_print\PdfBuilderInterface
+   * @var \Drupal\entity_print\PrintBuilderInterface
    */
-  protected $pdfBuilder;
+  protected $printBuilder;
 
   /**
    * The Entity Print plugin manager.
@@ -63,19 +63,19 @@ class PdfDownload extends ActionBase implements ContainerFactoryPluginInterface
   protected $entityPrintConfig;
 
   /**
-   * The PDF engine implementation.
+   * The Print engine implementation.
    *
-   * @var \Drupal\entity_print\Plugin\PdfEngineInterface
+   * @var \Drupal\entity_print\Plugin\PrintEngineInterface
    */
-  protected $pdfEngine;
+  protected $printEngine;
 
   /**
    * {@inheritdoc}
    */
-  public function __construct(array $configuration, $plugin_id, $plugin_definition, AccessManagerInterface $access_manager, PdfBuilderInterface $pdf_builder, PluginManagerInterface $plugin_manager, ImmutableConfig $entity_print_config) {
+  public function __construct(array $configuration, $plugin_id, $plugin_definition, AccessManagerInterface $access_manager, PrintBuilderInterface $print_builder, PluginManagerInterface $plugin_manager, ImmutableConfig $entity_print_config) {
     parent::__construct($configuration, $plugin_id, $plugin_definition);
     $this->accessManager = $access_manager;
-    $this->pdfBuilder = $pdf_builder;
+    $this->printBuilder = $print_builder;
     $this->pluginManager = $plugin_manager;
     $this->entityPrintConfig = $entity_print_config;
   }
@@ -89,8 +89,8 @@ class PdfDownload extends ActionBase implements ContainerFactoryPluginInterface
       $plugin_id,
       $plugin_definition,
       $container->get('access_manager'),
-      $container->get('entity_print.pdf_manager'),
-      $container->get('plugin.manager.entity_print.pdf_engine'),
+      $container->get('entity_print.print_manager'),
+      $container->get('plugin.manager.entity_print.print_engine'),
       $container->get('config.factory')->get('entity_print.settings')
     );
   }
@@ -112,7 +112,7 @@ class PdfDownload extends ActionBase implements ContainerFactoryPluginInterface
    */
   public function execute($entity = NULL) {
     $this->sendResponse((function() use ($entity) {
-      $this->pdfBuilder->getEntityRenderedAsPdf($entity, $this->getPdfEngine(), TRUE);
+      $this->printBuilder->printSingle($entity, $this->getPrintEngine(), TRUE);
     }));
   }
 
@@ -121,7 +121,7 @@ class PdfDownload extends ActionBase implements ContainerFactoryPluginInterface
    */
   public function executeMultiple(array $entities) {
     $this->sendResponse((function() use ($entities) {
-      $this->pdfBuilder->getMultipleEntitiesRenderedAsPdf($entities, $this->getPdfEngine(), TRUE);
+      $this->printBuilder->printMultiple($entities, $this->getPrintEngine(), TRUE);
     }));
   }
 
@@ -135,22 +135,22 @@ class PdfDownload extends ActionBase implements ContainerFactoryPluginInterface
     try {
       (new StreamedResponse($callback))->send();
     }
-    catch (PdfEngineException $e) {
+    catch (PrintEngineException $e) {
       drupal_set_message(new FormattableMarkup(Xss::filter($e->getMessage()), []), 'error');
     }
   }
 
   /**
-   * Gets the PDF engine implementation.
+   * Gets the Print engine implementation.
    *
-   * @return \Drupal\entity_print\Plugin\PdfEngineInterface
-   *   The PDF Engine implementation.
+   * @return \Drupal\entity_print\Plugin\PrintEngineInterface
+   *   The Print Engine implementation.
    */
-  protected function getPdfEngine() {
-    if (!isset($this->pdfEngine)) {
-      $this->pdfEngine = $this->pluginManager->createInstance($this->entityPrintConfig->get('pdf_engine'));
+  protected function getPrintEngine() {
+    if (!isset($this->printEngine)) {
+      $this->printEngine = $this->pluginManager->createInstance($this->entityPrintConfig->get('print_engines.pdf_engine'));
     }
-    return $this->pdfEngine;
+    return $this->printEngine;
   }
 
 }
diff --git a/src/Plugin/EntityPrint/PdfEngine/DomPdf.php b/src/Plugin/EntityPrint/PrintEngine/DomPdf.php
similarity index 84%
rename from src/Plugin/EntityPrint/PdfEngine/DomPdf.php
rename to src/Plugin/EntityPrint/PrintEngine/DomPdf.php
index 171f5d9..c5267b4 100644
--- a/src/Plugin/EntityPrint/PdfEngine/DomPdf.php
+++ b/src/Plugin/EntityPrint/PrintEngine/DomPdf.php
@@ -2,24 +2,25 @@
 
 /**
  * @file
- * Contains \Drupal\entity_print\Plugin\EntityPrint\PdfEngine\DomPdf.
+ * Contains \Drupal\entity_print\Plugin\EntityPrint\PrintEngine\DomPdf.
  */
 
-namespace Drupal\entity_print\Plugin\EntityPrint\PdfEngine;
+namespace Drupal\entity_print\Plugin\EntityPrint\PrintEngine;
 
 use Dompdf\Dompdf as DompdfLib;
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
-use Drupal\entity_print\PdfEngineException;
-use Drupal\entity_print\Plugin\PdfEngineBase;
+use Drupal\entity_print\PrintEngineException;
+use Drupal\entity_print\Plugin\PrintEngineBase;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 use Symfony\Component\HttpFoundation\Request;
 use Dompdf\Adapter\CPDF;
 
 /**
- * @PdfEngine(
+ * @PrintEngine(
  *   id = "dompdf",
- *   label = @Translation("Dompdf")
+ *   label = @Translation("Dompdf"),
+ *   export_type = "pdf"
  * )
  *
  * To use this implementation you will need the DomPDF library, simply run
@@ -28,12 +29,12 @@ use Dompdf\Adapter\CPDF;
  *     composer require "dompdf/dompdf 0.7.0-beta3"
  * @endcode
  */
-class DomPdf extends PdfEngineBase implements ContainerFactoryPluginInterface {
+class DomPdf extends PrintEngineBase implements ContainerFactoryPluginInterface {
 
   /**
    * @var \Dompdf\Dompdf
    */
-  protected $pdf;
+  protected $print;
 
   /**
    * Keep track of HTML pages as they're added.
@@ -47,8 +48,8 @@ class DomPdf extends PdfEngineBase implements ContainerFactoryPluginInterface {
    */
   public function __construct(array $configuration, $plugin_id, $plugin_definition, Request $request) {
     parent::__construct($configuration, $plugin_id, $plugin_definition);
-    $this->pdf = new DompdfLib($this->configuration);
-    $this->pdf
+    $this->print = new DompdfLib($this->configuration);
+    $this->print
       ->setBaseHost($request->getHttpHost())
       ->setProtocol($request->getScheme() . '://');
   }
@@ -120,26 +121,26 @@ class DomPdf extends PdfEngineBase implements ContainerFactoryPluginInterface {
     // We must keep adding to previously added HTML as loadHtml() replaces the
     // entire document.
     $this->html .= (string) $content;
-    $this->pdf->loadHtml($this->html);
+    $this->print->loadHtml($this->html);
   }
 
   /**
    * {@inheritdoc}
    */
   public function send($filename = NULL) {
-    $this->pdf->render();
+    $this->print->render();
 
     // Dompdf doesn't have a return value for send so just check the error
     // global it provides.
     if ($errors = $this->getError()) {
-      throw new PdfEngineException(sprintf('Failed to generate PDF: %s', $errors));
+      throw new PrintEngineException(sprintf('Failed to generate PDF: %s', $errors));
     }
 
     // The Dompdf library internally adds the .pdf extension so we remove it
     // from our filename here.
     $filename = preg_replace('/\.pdf$/i', '', $filename);
 
-    $this->pdf->stream($filename);
+    $this->print->stream($filename);
   }
 
   /**
@@ -157,6 +158,7 @@ class DomPdf extends PdfEngineBase implements ContainerFactoryPluginInterface {
    * {@inheritdoc}
    */
   public static function dependenciesAvailable() {
+    return false;
     return class_exists('Dompdf\Dompdf');
   }
 
diff --git a/src/Plugin/EntityPrint/PdfEngine/PhpWkhtmlToPdf.php b/src/Plugin/EntityPrint/PrintEngine/PhpWkhtmlToPdf.php
similarity index 76%
rename from src/Plugin/EntityPrint/PdfEngine/PhpWkhtmlToPdf.php
rename to src/Plugin/EntityPrint/PrintEngine/PhpWkhtmlToPdf.php
index f9c068f..a93dd7e 100644
--- a/src/Plugin/EntityPrint/PdfEngine/PhpWkhtmlToPdf.php
+++ b/src/Plugin/EntityPrint/PrintEngine/PhpWkhtmlToPdf.php
@@ -2,20 +2,21 @@
 
 /**
  * @file
- * Contains \Drupal\entity_print\Plugin\EntityPrint\PdfEngine\PhpWkhtmlToPdf
+ * Contains \Drupal\entity_print\Plugin\EntityPrint\PrintEngine\PhpWkhtmlToPdf
  */
 
-namespace Drupal\entity_print\Plugin\EntityPrint\PdfEngine;
+namespace Drupal\entity_print\Plugin\EntityPrint\PrintEngine;
 
 use Drupal\Core\Form\FormStateInterface;
-use Drupal\entity_print\PdfEngineException;
-use Drupal\entity_print\Plugin\PdfEngineBase;
+use Drupal\entity_print\PrintEngineException;
+use Drupal\entity_print\Plugin\PrintEngineBase;
 use mikehaertl\wkhtmlto\Pdf;
 
 /**
- * @PdfEngine(
+ * @PrintEngine(
  *   id = "phpwkhtmltopdf",
- *   label = @Translation("Php Wkhtmltopdf")
+ *   label = @Translation("Php Wkhtmltopdf"),
+ *   export_type = "pdf"
  * )
  *
  * To use this implementation you will need the DomPDF library, simply run:
@@ -24,19 +25,19 @@ use mikehaertl\wkhtmlto\Pdf;
  *     composer require "mikehaertl/phpwkhtmltopdf ~2.1"
  * @endcode
  */
-class PhpWkhtmlToPdf extends PdfEngineBase {
+class PhpWkhtmlToPdf extends PrintEngineBase {
 
   /**
    * @var \mikehaertl\wkhtmlto\Pdf
    */
-  protected $pdf;
+  protected $print;
 
   /**
    * {@inheritdoc}
    */
   public function __construct(array $configuration, $plugin_id, $plugin_definition) {
     parent::__construct($configuration, $plugin_id, $plugin_definition);
-    $this->pdf = new Pdf(['binary' => $this->configuration['binary_location']]);
+    $this->print = new Pdf(['binary' => $this->configuration['binary_location']]);
   }
 
   /**
@@ -84,8 +85,8 @@ class PhpWkhtmlToPdf extends PdfEngineBase {
    * {@inheritdoc}
    */
   public function send($filename = NULL) {
-    if (!$this->pdf->send($filename)) {
-      throw new PdfEngineException(sprintf('Failed to generate PDF: %s', $this->pdf->getError()));
+    if (!$this->print->send($filename)) {
+      throw new PrintEngineException(sprintf('Failed to generate PDF: %s', $this->print->getError()));
     }
   }
 
@@ -93,7 +94,7 @@ class PhpWkhtmlToPdf extends PdfEngineBase {
    * {@inheritdoc}
    */
   public function addPage($content) {
-    $this->pdf->addPage($content);
+    $this->print->addPage($content);
   }
 
   /**
diff --git a/src/Plugin/EntityPrintPluginManager.php b/src/Plugin/EntityPrintPluginManager.php
index c4d40fa..b6555b1 100644
--- a/src/Plugin/EntityPrintPluginManager.php
+++ b/src/Plugin/EntityPrintPluginManager.php
@@ -5,8 +5,8 @@ namespace Drupal\entity_print\Plugin;
 use Drupal\Core\Cache\CacheBackendInterface;
 use Drupal\Core\Extension\ModuleHandlerInterface;
 use Drupal\Core\Plugin\DefaultPluginManager;
-use Drupal\entity_print\Event\PdfEvents;
-use Drupal\entity_print\PdfEngineException;
+use Drupal\entity_print\Event\PrintEvents;
+use Drupal\entity_print\PrintEngineException;
 use Symfony\Component\EventDispatcher\EventDispatcherInterface;
 use Symfony\Component\EventDispatcher\GenericEvent;
 
@@ -31,9 +31,9 @@ class EntityPrintPluginManager extends DefaultPluginManager {
    *   The module handler to invoke the alter hook with.
    */
   public function __construct(\Traversable $namespaces, CacheBackendInterface $cache_backend, ModuleHandlerInterface $module_handler, EventDispatcherInterface $dispatcher) {
-    parent::__construct('Plugin/EntityPrint/PdfEngine', $namespaces, $module_handler, 'Drupal\entity_print\Plugin\PdfEngineInterface', 'Drupal\entity_print\Annotation\PdfEngine');
-    $this->alterInfo('entity_print_pdf_engine');
-    $this->setCacheBackend($cache_backend, 'entity_print_pdf_engines');
+    parent::__construct('Plugin/EntityPrint/PrintEngine', $namespaces, $module_handler, 'Drupal\entity_print\Plugin\PrintEngineInterface', 'Drupal\entity_print\Annotation\PrintEngine');
+    $this->alterInfo('entity_print_print_engine');
+    $this->setCacheBackend($cache_backend, 'entity_print_print_engines');
     $this->dispatcher = $dispatcher;
   }
 
@@ -41,16 +41,16 @@ class EntityPrintPluginManager extends DefaultPluginManager {
    * {@inheritdoc}
    */
   public function createInstance($plugin_id, array $configuration = []) {
-    $configuration = array_merge($this->getPdfEngineSettings($plugin_id), $configuration);
+    $configuration = array_merge($this->getPrintEngineSettings($plugin_id), $configuration);
 
-    /** @var \Drupal\entity_print\Plugin\PdfEngineInterface $class */
+    /** @var \Drupal\entity_print\Plugin\PrintEngineInterface $class */
     $definition = $this->getDefinition($plugin_id);
     $class = $definition['class'];
 
     // Throw an exception if someone tries to use a plugin that doesn't have all
     // of its dependencies met.
     if (!$class::dependenciesAvailable()) {
-      throw new PdfEngineException(sprintf('Missing dependencies. %s', $class::getInstallationInstructions()));
+      throw new PrintEngineException(sprintf('Missing dependencies. %s', $class::getInstallationInstructions()));
     }
 
     return parent::createInstance($plugin_id, $configuration);
@@ -63,17 +63,17 @@ class EntityPrintPluginManager extends DefaultPluginManager {
    *   The plugin id.
    *
    * @return array
-   *   An array of PDF engine settings for this plugin.
+   *   An array of Print engine settings for this plugin.
    */
-  protected function getPdfEngineSettings($plugin_id) {
-    /** @var \Drupal\entity_print\Entity\PdfEngineInterface $storage */
-    $storage = \Drupal::entityTypeManager()->getStorage('pdf_engine');
+  protected function getPrintEngineSettings($plugin_id) {
+    /** @var \Drupal\entity_print\Entity\PrintEngineInterface $storage */
+    $storage = \Drupal::entityTypeManager()->getStorage('print_engine');
     if (!$entity = $storage->load($plugin_id)) {
       $entity = $storage->create(['id' => $plugin_id]);
     }
     $configuration = $entity->getSettings();
-    $event = new GenericEvent(PdfEvents::CONFIGURATION_ALTER, ['configuration' => $configuration, 'config' => $entity]);
-    $this->dispatcher->dispatch(PdfEvents::CONFIGURATION_ALTER, $event);
+    $event = new GenericEvent(PrintEvents::CONFIGURATION_ALTER, ['configuration' => $configuration, 'config' => $entity]);
+    $this->dispatcher->dispatch(PrintEvents::CONFIGURATION_ALTER, $event);
     $configuration = $event->getArgument('configuration');
 
     return $configuration;
diff --git a/src/Plugin/PdfEngineBase.php b/src/Plugin/PrintEngineBase.php
similarity index 87%
rename from src/Plugin/PdfEngineBase.php
rename to src/Plugin/PrintEngineBase.php
index 0036a47..6d503a3 100644
--- a/src/Plugin/PdfEngineBase.php
+++ b/src/Plugin/PrintEngineBase.php
@@ -2,7 +2,7 @@
 
 /**
  * @file
- * Contains \Drupal\entity_print\Plugin\PdfEngineBase
+ * Contains \Drupal\entity_print\Plugin\PrintEngineBase.
  */
 
 namespace Drupal\entity_print\Plugin;
@@ -11,16 +11,16 @@ use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\Plugin\PluginBase;
 
 /**
- * The PdfEngineBase class.
+ * The PrintEngineBase class.
  */
-abstract class PdfEngineBase extends PluginBase implements PdfEngineInterface {
+abstract class PrintEngineBase extends PluginBase implements PrintEngineInterface {
 
   /**
-   * The PDF library object.
+   * The Print library object.
    *
    * @var object
    */
-  protected $pdf;
+  protected $print;
 
   /**
    * {@inheritdoc}
diff --git a/src/Plugin/PdfEngineInterface.php b/src/Plugin/PrintEngineInterface.php
similarity index 67%
rename from src/Plugin/PdfEngineInterface.php
rename to src/Plugin/PrintEngineInterface.php
index d77c576..1740477 100644
--- a/src/Plugin/PdfEngineInterface.php
+++ b/src/Plugin/PrintEngineInterface.php
@@ -2,7 +2,7 @@
 
 /**
  * @file
- * Contains \Drupal\entity_print\Plugin\PdfEngineInterface
+ * Contains \Drupal\entity_print\Plugin\PrintEngineInterface
  */
 
 namespace Drupal\entity_print\Plugin;
@@ -11,7 +11,7 @@ use Drupal\Component\Plugin\PluginInspectionInterface;
 use Drupal\Component\Plugin\ConfigurablePluginInterface;
 use Drupal\Core\Plugin\PluginFormInterface;
 
-interface PdfEngineInterface extends PluginInspectionInterface, PluginFormInterface, ConfigurablePluginInterface {
+interface PrintEngineInterface extends PluginInspectionInterface, PluginFormInterface, ConfigurablePluginInterface {
 
   /**
    * Add a string of HTML to a new page.
@@ -24,18 +24,18 @@ interface PdfEngineInterface extends PluginInspectionInterface, PluginFormInterf
   public function addPage($content);
 
   /**
-   * Send the PDF contents to the browser.
+   * Send the Print contents to the browser.
    *
    * @param $filename
    *   (optional) The filename if we want to force the browser to download.
    *
-   * @throws \Drupal\entity_print\PdfEngineException
-   *   Thrown when PDF generation fails.
+   * @throws \Drupal\entity_print\PrintEngineException
+   *   Thrown when Print generation fails.
    */
   public function send($filename = NULL);
 
   /**
-   * Checks if the PDF engine dependencies are available.
+   * Checks if the Print engine dependencies are available.
    *
    * @return bool
    *   TRUE if this implementation has its dependencies met otherwise FALSE.
@@ -43,7 +43,7 @@ interface PdfEngineInterface extends PluginInspectionInterface, PluginFormInterf
   public static function dependenciesAvailable();
 
   /**
-   * Gets the installation instructions for this PDF engine.
+   * Gets the installation instructions for this Print engine.
    *
    * @return string
    *   A description of how the user can meet the dependencies for this engine.
diff --git a/src/EntityPrintPdfBuilder.php b/src/PrintBuilder.php
similarity index 63%
rename from src/EntityPrintPdfBuilder.php
rename to src/PrintBuilder.php
index 00512c5..ff341b1 100644
--- a/src/EntityPrintPdfBuilder.php
+++ b/src/PrintBuilder.php
@@ -3,17 +3,17 @@
 namespace Drupal\entity_print;
 
 use Drupal\Core\Entity\EntityInterface;
-use Drupal\entity_print\Event\PdfEvents;
-use Drupal\entity_print\Event\PreSendPdfEvent;
-use Drupal\entity_print\Event\PreSendPdfMultipleEvent;
-use Drupal\entity_print\Plugin\PdfEngineInterface;
+use Drupal\entity_print\Event\PrintEvents;
+use Drupal\entity_print\Event\PreSendPrintEvent;
+use Drupal\entity_print\Event\PreSendPrintMultipleEvent;
+use Drupal\entity_print\Plugin\PrintEngineInterface;
 use Drupal\entity_print\Renderer\RendererFactoryInterface;
 use Symfony\Component\EventDispatcher\EventDispatcherInterface;
 
-class EntityPrintPdfBuilder implements PdfBuilderInterface {
+class PrintBuilder implements PrintBuilderInterface {
 
   /**
-   * The PDF Renderer factory.
+   * The Print Renderer factory.
    *
    * @var \Drupal\entity_print\Renderer\RendererFactoryInterface
    */
@@ -27,7 +27,7 @@ class EntityPrintPdfBuilder implements PdfBuilderInterface {
   protected $dispatcher;
 
   /**
-   * Constructs a new EntityPrintPdfBuilder.
+   * Constructs a new EntityPrintPrintBuilder.
    *
    * @param \Drupal\entity_print\Renderer\RendererFactoryInterface $renderer_factory
    *   The Renderer factory.
@@ -42,39 +42,39 @@ class EntityPrintPdfBuilder implements PdfBuilderInterface {
   /**
    * {@inheritdoc}
    */
-  public function getEntityRenderedAsPdf(EntityInterface $entity, PdfEngineInterface $pdf_engine, $force_download = FALSE, $use_default_css = TRUE) {
-    $pdf_engine->addPage($this->rendererFactory->create($entity)->getHtml($entity, $use_default_css, TRUE));
+  public function printSingle(EntityInterface $entity, PrintEngineInterface $print_engine, $force_download = FALSE, $use_default_css = TRUE) {
+    $print_engine->addPage($this->rendererFactory->create($entity)->getHtml($entity, $use_default_css, TRUE));
 
-    // Allow other modules to alter the generated PDF object.
-    $this->dispatcher->dispatch(PdfEvents::PRE_SEND, new PreSendPdfEvent($pdf_engine, $entity));
+    // Allow other modules to alter the generated Print object.
+    $this->dispatcher->dispatch(PrintEvents::PRE_SEND, new PreSendPrintEvent($print_engine, $entity));
 
     // If we're forcing a download we need a filename otherwise it's just sent
     // straight to the browser.
     $filename = $force_download ? $this->generateFilename($entity) : NULL;
 
-    return $pdf_engine->send($filename);
+    return $print_engine->send($filename);
   }
 
   /**
    * {@inheritdoc}
    */
-  public function getMultipleEntitiesRenderedAsPdf(array $entities, PdfEngineInterface $pdf_engine, $force_download = FALSE, $use_default_css = TRUE) {
-    $pdf_engine->addPage($this->rendererFactory->create($entities)->getHtmlMultiple($entities, $use_default_css, TRUE));
+  public function printMultiple(array $entities, PrintEngineInterface $print_engine, $force_download = FALSE, $use_default_css = TRUE) {
+    $print_engine->addPage($this->rendererFactory->create($entities)->getHtmlMultiple($entities, $use_default_css, TRUE));
 
-    // Allow other modules to alter the generated PDF object.
-    $this->dispatcher->dispatch(PdfEvents::PRE_SEND_MULTIPLE, new PreSendPdfMultipleEvent($pdf_engine, $entities));
+    // Allow other modules to alter the generated Print object.
+    $this->dispatcher->dispatch(PrintEvents::PRE_SEND_MULTIPLE, new PreSendPrintMultipleEvent($print_engine, $entities));
 
     // If we're forcing a download we need a filename otherwise it's just sent
     // straight to the browser.
     $filename = $force_download ? $this->generateMultiFilename($entities) : NULL;
 
-    return $pdf_engine->send($filename);
+    return $print_engine->send($filename);
   }
 
   /**
    * {@inheritdoc}
    */
-  public function getEntityRenderedAsHtml(EntityInterface $entity, $use_default_css = TRUE, $optimize_css = TRUE) {
+  public function printHtml(EntityInterface $entity, $use_default_css = TRUE, $optimize_css = TRUE) {
     return $this->rendererFactory->create($entity)->getHtml($entity, $use_default_css, $optimize_css);
   }
 
@@ -84,7 +84,7 @@ class EntityPrintPdfBuilder implements PdfBuilderInterface {
    * @param \Drupal\Core\Entity\EntityInterface $entity
    *   The content entity to generate the filename.
    * @param bool $with_extension
-   *   Allow us to exclude the PDF file extension when generating the filename.
+   *   Allow us to exclude the Print file extension when generating the filename.
    *
    * @return string
    *   The cleaned filename from the entity label.
@@ -96,6 +96,7 @@ class EntityPrintPdfBuilder implements PdfBuilderInterface {
     if (!$filename) {
       $filename = $entity->getEntityTypeId();
     }
+    // @TODO abstract the .pdf extension.
     return $with_extension ? $filename . '.pdf' : $filename;
   }
 
diff --git a/src/PrintBuilderInterface.php b/src/PrintBuilderInterface.php
new file mode 100644
index 0000000..93b8a07
--- /dev/null
+++ b/src/PrintBuilderInterface.php
@@ -0,0 +1,61 @@
+<?php
+
+namespace Drupal\entity_print;
+
+use Drupal\Core\Entity\EntityInterface;
+use Drupal\entity_print\Plugin\PrintEngineInterface;
+
+/**
+ * Interface for the Print builder service.
+ */
+interface PrintBuilderInterface {
+
+  /**
+   * Render any content entity as a Print.
+   *
+   * @param \Drupal\Core\Entity\EntityInterface $entity
+   *   The content entity to render.
+   * @param \Drupal\entity_print\Plugin\PrintEngineInterface $print_engine
+   *   The plugin id of the Print engine to use.
+   * @param bool $force_download
+   *   (optional) TRUE to try and force the Print to be downloaded rather than opened.
+   * @param bool $use_default_css
+   *   (optional) TRUE if you want the default CSS included, otherwise FALSE.
+   *
+   * @return string
+   *   FALSE or the Print content will be sent to the browser.
+   */
+  public function printSingle(EntityInterface $entity, PrintEngineInterface $print_engine, $force_download = FALSE, $use_default_css = TRUE);
+
+  /**
+   * Render any content entity as a Print.
+   *
+   * @param array $entities
+   *   An array of content entities to render, 1 per page.
+   * @param \Drupal\entity_print\Plugin\PrintEngineInterface $print_engine
+   *   The plugin id of the Print engine to use.
+   * @param bool $force_download
+   *   (optional) TRUE to try and force the Print to be downloaded rather than opened.
+   * @param bool $use_default_css
+   *   (optional) TRUE if you want the default CSS included, otherwise FALSE.
+   *
+   * @return string
+   *   FALSE or the Print content will be sent to the browser.
+   */
+  public function printMultiple(array $entities, PrintEngineInterface $print_engine, $force_download = FALSE, $use_default_css = TRUE);
+
+  /**
+   * Get a HTML version of the entity as used for the Print rendering.
+   *
+   * @param \Drupal\Core\Entity\EntityInterface $entity
+   *   The content entity to render.
+   * @param bool $use_default_css
+   *   TRUE if you want the default CSS included, otherwise FALSE.
+   * @param bool $optimize_css
+   *   TRUE if you the CSS should be compressed otherwise FALSE.
+   *
+   * @return string
+   *   The rendered HTML for this entity, the same as what is used for the Print.
+   */
+  public function printHtml(EntityInterface $entity, $use_default_css = TRUE, $optimize_css = TRUE);
+}
diff --git a/src/PrintEngineException.php b/src/PrintEngineException.php
new file mode 100644
index 0000000..6bdff35
--- /dev/null
+++ b/src/PrintEngineException.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\entity_print\PrintEngineException
+ */
+
+namespace Drupal\entity_print;
+
+/**
+ * This exception is thrown when a Print implementation fails to generate a Print.
+ */
+class PrintEngineException extends \Exception {
+
+}
diff --git a/src/Renderer/ContentEntityRenderer.php b/src/Renderer/ContentEntityRenderer.php
index c66b40e..374d522 100644
--- a/src/Renderer/ContentEntityRenderer.php
+++ b/src/Renderer/ContentEntityRenderer.php
@@ -10,9 +10,9 @@ use Drupal\Core\Entity\EntityTypeManagerInterface;
 use Drupal\Core\Extension\InfoParserInterface;
 use Drupal\Core\Extension\ThemeHandlerInterface;
 use Drupal\Core\Render\RendererInterface;
-use Drupal\entity_print\Event\PdfCssAlterEvent;
-use Drupal\entity_print\Event\PdfEvents;
-use Drupal\entity_print\Event\PdfHtmlAlterEvent;
+use Drupal\entity_print\Event\PrintCssAlterEvent;
+use Drupal\entity_print\Event\PrintEvents;
+use Drupal\entity_print\Event\PrintHtmlAlterEvent;
 use Symfony\Component\EventDispatcher\EventDispatcherInterface;
 
 class ContentEntityRenderer extends RendererBase {
@@ -88,7 +88,7 @@ class ContentEntityRenderer extends RendererBase {
       $render = $this->addCss($render, $entity);
     }
 
-    $this->dispatcher->dispatch(PdfEvents::CSS_ALTER, new PdfCssAlterEvent($render, $entities));
+    $this->dispatcher->dispatch(PrintEvents::CSS_ALTER, new PrintCssAlterEvent($render, $entities));
     $css_assets = $this->assetResolver->getCssAssets(AttachedAssets::createFromRenderArray($render), $optimize_css);
     $rendered_css = $this->cssRenderer->render($css_assets);
     $render['#entity_print_css'] = $this->renderer->render($rendered_css);
@@ -96,7 +96,7 @@ class ContentEntityRenderer extends RendererBase {
     $html = (string) $this->renderer->render($render);
 
     // Allow other modules to alter the generated HTML.
-    $this->dispatcher->dispatch(PdfEvents::POST_RENDER, new PdfHtmlAlterEvent($html, $entities));
+    $this->dispatcher->dispatch(PrintEvents::POST_RENDER, new PrintHtmlAlterEvent($html, $entities));
 
     return $html;
   }
diff --git a/src/Renderer/RendererFactory.php b/src/Renderer/RendererFactory.php
index 04a11c8..5e28d4b 100644
--- a/src/Renderer/RendererFactory.php
+++ b/src/Renderer/RendererFactory.php
@@ -3,7 +3,7 @@
 namespace Drupal\entity_print\Renderer;
 
 use Drupal\Core\Entity\EntityInterface;
-use Drupal\entity_print\PdfEngineException;
+use Drupal\entity_print\PrintEngineException;
 use Symfony\Component\DependencyInjection\ContainerAwareTrait;
 
 /**
@@ -36,7 +36,7 @@ class RendererFactory implements RendererFactoryInterface {
       }
     }
 
-    throw new PdfEngineException(sprintf('Rendering not yet supported for "%s". Entity Print context "%s"', is_object($item) ? get_class($item) : $item, $context));
+    throw new PrintEngineException(sprintf('Rendering not yet supported for "%s". Entity Print context "%s"', is_object($item) ? get_class($item) : $item, $context));
   }
 
 }
diff --git a/src/Tests/EntityPrintAdminTest.php b/src/Tests/EntityPrintAdminTest.php
index 34b685c..1cbf715 100644
--- a/src/Tests/EntityPrintAdminTest.php
+++ b/src/Tests/EntityPrintAdminTest.php
@@ -1,10 +1,5 @@
 <?php
 
-/**
- * @file
- * Contains \Drupal\entity_print\Tests\EntityPrintAdminTest
- */
-
 namespace Drupal\entity_print\Tests;
 
 use Drupal\Core\Entity\Entity\EntityViewDisplay;
@@ -37,13 +32,19 @@ class EntityPrintAdminTest extends WebTestBase {
   protected function setUp() {
     parent::setUp();
     // Create a content type and a dummy node.
-    $this->drupalCreateContentType(array(
+    $this->drupalCreateContentType([
       'type' => 'page',
       'name' => 'Page',
-    ));
+    ]);
     $this->node = $this->drupalCreateNode();
 
-    $account = $this->drupalCreateUser(['bypass entity print access', 'administer entity print', 'access content', 'administer content types', 'administer node display']);
+    $account = $this->drupalCreateUser([
+      'bypass entity print access',
+      'administer entity print',
+      'access content',
+      'administer content types',
+      'administer node display',
+    ]);
     $this->drupalLogin($account);
   }
 
@@ -57,18 +58,18 @@ class EntityPrintAdminTest extends WebTestBase {
     $this->assertNoText('Dompdf Settings');
 
     // Make sure we also get a warning telling us to install it.
-    $this->assertText('Dompdf is not available because it is not configured. Please install using composer.');
+    $this->assertText('Dompdf is not available because it is not configured. Please install with:');
 
     // Ensure saving the form without any PDF engine selected doesn't blow up.
     $this->drupalPostForm(NULL, [], 'Save configuration');
 
     // Assert the intial config values.
-    $this->drupalPostAjaxForm(NULL, ['pdf_engine' => 'testpdfengine'], 'pdf_engine');
+    $this->drupalPostAjaxForm(NULL, ['pdf_engine' => 'testprintengine'], 'pdf_engine');
     $this->assertFieldByName('test_engine_setting', 'initial value');
 
     // Ensure the plugin gets the chance to validate the form.
     $this->drupalPostForm(NULL, [
-      'pdf_engine' => 'testpdfengine',
+      'pdf_engine' => 'testprintengine',
       'test_engine_setting' => 'rejected',
     ], 'Save configuration');
     $this->assertText('Setting has an invalid value');
@@ -76,21 +77,21 @@ class EntityPrintAdminTest extends WebTestBase {
     $this->drupalPostForm(NULL, [
       'default_css' => 0,
       'force_download' => 0,
-      'pdf_engine' => 'testpdfengine',
+      'pdf_engine' => 'testprintengine',
       'test_engine_setting' => 'testvalue',
     ], 'Save configuration');
 
-    /** @var \Drupal\entity_print\Entity\PdfEngineInterface $config_entity */
-    $config_entity = \Drupal::entityTypeManager()->getStorage('pdf_engine')->load('testpdfengine');
+    /** @var \Drupal\entity_print\Entity\PrintEngineInterface $config_entity */
+    $config_entity = \Drupal::entityTypeManager()->getStorage('print_engine')->load('testprintengine');
 
     // Assert the expected settings were stored.
-    $this->assertEqual('testpdfengine', $config_entity->id());
+    $this->assertEqual('testprintengine', $config_entity->id());
     $this->assertEqual(['test_engine_setting' => 'testvalue', 'test_engine_suffix' => 'overridden'], $config_entity->getSettings());
     $this->assertEqual('entity_print_test', $config_entity->getDependencies()['module'][0]);
 
-    // Assert that the testpdfengine is actually used.
-    $this->drupalGet('/entityprint/node/1');
-    $this->assertText('Using testpdfengine - overridden');
+    // Assert that the testprintengine is actually used.
+    $this->drupalGet('/entityprint/pdf/node/1');
+    $this->assertText('Using testprintengine - overridden');
   }
 
   /**
@@ -107,7 +108,7 @@ class EntityPrintAdminTest extends WebTestBase {
     // Ensure the link doesn't appear by default.
     $this->drupalGet($this->node->toUrl());
     $this->assertNoText('View PDF');
-    $this->assertNoLinkByHref('entityprint/node/1');
+    $this->assertNoLinkByHref('entityprint/pdf/node/1');
 
     // Save the default display with custom text.
     $random_text = $this->randomMachineName();
@@ -119,10 +120,10 @@ class EntityPrintAdminTest extends WebTestBase {
     // Visit our page node and ensure the link is available.
     $this->drupalGet($this->node->toUrl());
     $this->assertLink($random_text);
-    $this->assertLinkByHref('/entityprint/node/1');
+    $this->assertLinkByHref('/entityprint/pdf/node/1');
 
     // Ensure we're using the full view mode and not the PDF view mode.
-    $this->drupalGet('/entityprint/node/1/debug');
+    $this->drupalGet('/entityprint/pdf/node/1/debug');
     $this->assertRaw('node--view-mode-full');
     $this->assertNoRaw('node--view-mode-pdf');
 
@@ -136,7 +137,7 @@ class EntityPrintAdminTest extends WebTestBase {
     ], 'Save');
 
     // Ensure the PDF view mode is now in use.
-    $this->drupalGet('/entityprint/node/1/debug');
+    $this->drupalGet('/entityprint/pdf/node/1/debug');
     $this->assertRaw('node--view-mode-pdf');
     $this->assertNoRaw('node--view-mode-full');
 
diff --git a/src/Tests/EntityPrintTest.php b/src/Tests/EntityPrintTest.php
index c6d4bff..1bca1f1 100644
--- a/src/Tests/EntityPrintTest.php
+++ b/src/Tests/EntityPrintTest.php
@@ -1,10 +1,5 @@
 <?php
 
-/**
- * @file
- * Contains \Drupal\entity_print\Tests\EntityPrintTest.
- */
-
 namespace Drupal\entity_print\Tests;
 
 use Drupal\simpletest\WebTestBase;
@@ -65,7 +60,7 @@ class EntityPrintTest extends WebTestBase {
     $account = $this->drupalCreateUser(['bypass entity print access', 'access content'], $this->randomMachineName());
     $this->drupalLogin($account);
 
-    $this->drupalGet('entityprint/node/' . $this->node->id() . '/debug');
+    $this->drupalGet('entityprint/pdf/node/' . $this->node->id() . '/debug');
     $config = \Drupal::configFactory()->getEditable('entity_print.settings');
 
     // Test the global CSS is there.
@@ -92,64 +87,69 @@ class EntityPrintTest extends WebTestBase {
     // User with bypass entity print access but not content access.
     $account = $this->drupalCreateUser(array('bypass entity print access'));
     $this->drupalLogin($account);
-    $this->drupalGet('entityprint/node/' . $this->node->id() . '/debug');
+    $this->drupalGet('entityprint/pdf/node/' . $this->node->id() . '/debug');
     $this->assertResponse(403, 'User with only the bypass entity print access permission cannot view PDF.');
 
     // User with access content but not entity print access.
     $account = $this->drupalCreateUser(['access content'], $this->randomMachineName());
     $this->drupalLogin($account);
-    $this->drupalGet('entityprint/node/' . $this->node->id() . '/debug');
+    $this->drupalGet('entityprint/pdf/node/' . $this->node->id() . '/debug');
     $this->assertResponse(403, 'User with access content but no entity print permission cannot view PDF.');
 
     // User with both bypass entity print access and entity view.
     $account = $this->drupalCreateUser(array('bypass entity print access', 'access content'));
     $this->drupalLogin($account);
-    $this->drupalGet('entityprint/node/' . $this->node->id() . '/debug');
+    $this->drupalGet('entityprint/pdf/node/' . $this->node->id() . '/debug');
     $this->assertResponse(200, 'User with both permissions can view the PDF.');
 
     // User with entity type access permission and entity view.
     $account = $this->drupalCreateUser(array('entity print access type node', 'access content'));
     $this->drupalLogin($account);
-    $this->drupalGet('entityprint/node/' . $this->node->id() . '/debug');
+    $this->drupalGet('entityprint/pdf/node/' . $this->node->id() . '/debug');
     $this->assertResponse(200, 'User with entity print type and access content permission is allowed to see the content.');
 
     // User with different entity type access permission and entity view.
     $account = $this->drupalCreateUser(array('entity print access type user', 'access content'));
     $this->drupalLogin($account);
-    $this->drupalGet('entityprint/node/' . $this->node->id() . '/debug');
+    $this->drupalGet('entityprint/pdf/node/' . $this->node->id() . '/debug');
     $this->assertResponse(403, 'User with different entity print type and access content permission is not allowed to see the content.');
 
     // User with entity bundle access permission and entity view.
     $account = $this->drupalCreateUser(array('entity print access bundle page', 'access content'));
     $this->drupalLogin($account);
-    $this->drupalGet('entityprint/node/' . $this->node->id() . '/debug');
+    $this->drupalGet('entityprint/pdf/node/' . $this->node->id() . '/debug');
     $this->assertResponse(200, 'User with entity print bundle and access content permission is allowed to see the content.');
 
     // User with different bundle permission and entity view.
     $account = $this->drupalCreateUser(array('entity print access bundle user', 'access content'));
     $this->drupalLogin($account);
-    $this->drupalGet('entityprint/node/' . $this->node->id() . '/debug');
+    $this->drupalGet('entityprint/pdf/node/' . $this->node->id() . '/debug');
     $this->assertResponse(403, 'User with different entity print bundle and access content permission is not allowed to see the content.');
 
     // User with print bundle user permissions and entity view.
     $account = $this->drupalCreateUser(array('entity print access bundle user', 'access content'));
     $this->drupalLogin($account);
-    $this->drupalGet('entityprint/user/' . $account->id() . '/debug');
+    $this->drupalGet('entityprint/pdf/user/' . $account->id() . '/debug');
     $this->assertResponse(200, 'User with entity print user bundle permission and access content permission is allowed to see the content.');
 
     // User with neither permissions.
     $account = $this->drupalCreateUser();
     $this->drupalLogin($account);
-    $this->drupalGet('entityprint/node/' . $this->node->id() . '/debug');
+    $this->drupalGet('entityprint/pdf/node/' . $this->node->id() . '/debug');
     $this->assertResponse(403, 'User with neither permission cannot view the PDF.');
 
     // Invalid entity type causes access denied.
-    $this->drupalGet('entityprint/invalid/' . $this->node->id() . '/debug');
+    $this->drupalGet('entityprint/pdf/invalid/' . $this->node->id() . '/debug');
     $this->assertResponse(403, 'Invalid entity type triggers access denied.');
 
     // Invalid entity id also triggers access denied.
-    $this->drupalGet('entityprint/node/invalid-entity-id/debug');
+    $this->drupalGet('entityprint/pdf/node/invalid-entity-id/debug');
     $this->assertResponse(403, 'Invalid entity id triggers access denied.');
+
+    // Invalid export type also triggers access denied.
+    $this->drupalGet('entityprint/invalid/node/' . $this->node->id() . '/debug');
+    $this->assertResponse(403, 'Invalid entity id triggers access denied.');
+
   }
 
 }
diff --git a/tests/modules/entity_print_test/config/install/entity_print.pdf_engine.testpdfengine.yml b/tests/modules/entity_print_test/config/install/entity_print.print_engine.testprintengine.yml
similarity index 78%
rename from tests/modules/entity_print_test/config/install/entity_print.pdf_engine.testpdfengine.yml
rename to tests/modules/entity_print_test/config/install/entity_print.print_engine.testprintengine.yml
index 7a5efb8..afac507 100644
--- a/tests/modules/entity_print_test/config/install/entity_print.pdf_engine.testpdfengine.yml
+++ b/tests/modules/entity_print_test/config/install/entity_print.print_engine.testprintengine.yml
@@ -1,4 +1,4 @@
-id: testpdfengine
+id: testprintengine
 settings:
   test_engine_setting: 'initial value'
   test_engine_suffix: ''
diff --git a/tests/modules/entity_print_test/config/schema/entity_print_test.schema.yml b/tests/modules/entity_print_test/config/schema/entity_print_test.schema.yml
index dadcc56..4a73b8d 100644
--- a/tests/modules/entity_print_test/config/schema/entity_print_test.schema.yml
+++ b/tests/modules/entity_print_test/config/schema/entity_print_test.schema.yml
@@ -1,4 +1,4 @@
-entity_print_pdf_engine.testpdfengine:
+entity_print_print_engine.testprintengine:
   type: mapping
   label: 'Test Pdf Engine setting'
   mapping:
diff --git a/tests/modules/entity_print_test/entity_print_test.module b/tests/modules/entity_print_test/entity_print_test.module
index 180cc65..075950d 100644
--- a/tests/modules/entity_print_test/entity_print_test.module
+++ b/tests/modules/entity_print_test/entity_print_test.module
@@ -22,7 +22,7 @@ function entity_print_test_entity_print_pdf_engine_alter(&$definitions) {
   $disabled_engines = ['dompdf', 'phpwkhtmltopdf'];
   foreach ($disabled_engines as $id) {
     if (isset($definitions[$id]['class'])) {
-      $definitions[$id]['class'] = 'Drupal\entity_print_test\Plugin\EntityPrint\PdfEngine\NotAvailablePdfEngine';
+      $definitions[$id]['class'] = 'Drupal\entity_print_test\Plugin\EntityPrint\PrintEngine\NotAvailablePrintEngine';
     }
   }
 }
diff --git a/tests/modules/entity_print_test/src/EventSubscriber/TestEngineConfigurationAlter.php b/tests/modules/entity_print_test/src/EventSubscriber/TestEngineConfigurationAlter.php
index 43ba007..e1131d4 100644
--- a/tests/modules/entity_print_test/src/EventSubscriber/TestEngineConfigurationAlter.php
+++ b/tests/modules/entity_print_test/src/EventSubscriber/TestEngineConfigurationAlter.php
@@ -2,9 +2,9 @@
 
 namespace Drupal\entity_print_test\EventSubscriber;
 
-use Drupal\entity_print\Event\PdfCssAlterEvent;
-use Drupal\entity_print\Event\PdfEvents;
-use Drupal\entity_print\Event\PreSendPdfEvent;
+use Drupal\entity_print\Event\PrintCssAlterEvent;
+use Drupal\entity_print\Event\PrintEvents;
+use Drupal\entity_print\Event\PreSendPrintEvent;
 use Symfony\Component\EventDispatcher\EventSubscriberInterface;
 use Symfony\Component\EventDispatcher\GenericEvent;
 
@@ -20,17 +20,17 @@ class TestEngineConfigurationAlter implements EventSubscriberInterface {
    *   The event object.
    */
   public function alterConfiguration(GenericEvent $event) {
-    if ($event->getArgument('config')->id() === 'testpdfengine') {
+    if ($event->getArgument('config')->id() === 'testprintengine') {
       $event->setArgument('configuration', ['test_engine_suffix' => 'overridden'] + $event->getArgument('configuration'));
     }
   }
 
   /**
    * Alter the CSS renderable array and add our CSS.
-   * @param \Drupal\entity_print\Event\PdfCssAlterEvent $event
+   * @param \Drupal\entity_print\Event\PrintCssAlterEvent $event
    *   The event object.
    */
-  public function alterCss(PdfCssAlterEvent $event) {
+  public function alterCss(PrintCssAlterEvent $event) {
     $event->getBuild()['#attached']['library'][] = 'entity_print_test_theme/module';
   }
 
@@ -39,8 +39,8 @@ class TestEngineConfigurationAlter implements EventSubscriberInterface {
    */
   public static function getSubscribedEvents() {
     return [
-      PdfEvents::CONFIGURATION_ALTER => 'alterConfiguration',
-      PdfEvents::CSS_ALTER => 'alterCss',
+      PrintEvents::CONFIGURATION_ALTER => 'alterConfiguration',
+      PrintEvents::CSS_ALTER => 'alterCss',
     ];
   }
 
diff --git a/tests/modules/entity_print_test/src/Plugin/EntityPrint/PdfEngine/NotAvailablePdfEngine.php b/tests/modules/entity_print_test/src/Plugin/EntityPrint/PrintEngine/NotAvailablePrintEngine.php
similarity index 56%
rename from tests/modules/entity_print_test/src/Plugin/EntityPrint/PdfEngine/NotAvailablePdfEngine.php
rename to tests/modules/entity_print_test/src/Plugin/EntityPrint/PrintEngine/NotAvailablePrintEngine.php
index dd6aa65..8323af6 100644
--- a/tests/modules/entity_print_test/src/Plugin/EntityPrint/PdfEngine/NotAvailablePdfEngine.php
+++ b/tests/modules/entity_print_test/src/Plugin/EntityPrint/PrintEngine/NotAvailablePrintEngine.php
@@ -2,14 +2,14 @@
 
 /**
  * @file
- * Contains \Drupal\entity_print_test\Plugin\EntityPrint\PdfEngine\NotAvailablePdfEngine
+ * Contains \Drupal\entity_print_test\Plugin\EntityPrint\PrintEngine\NotAvailablePrintEngine
  */
 
-namespace Drupal\entity_print_test\Plugin\EntityPrint\PdfEngine;
+namespace Drupal\entity_print_test\Plugin\EntityPrint\PrintEngine;
 
-use Drupal\entity_print\Plugin\PdfEngineBase;
+use Drupal\entity_print\Plugin\PrintEngineBase;
 
-class NotAvailablePdfEngine extends PdfEngineBase {
+class NotAvailablePrintEngine extends PrintEngineBase {
 
   /**
    * {@inheritdoc}
diff --git a/tests/modules/entity_print_test/src/Plugin/EntityPrint/PdfEngine/TestPdfEngine.php b/tests/modules/entity_print_test/src/Plugin/EntityPrint/PrintEngine/TestPrintEngine.php
similarity index 79%
rename from tests/modules/entity_print_test/src/Plugin/EntityPrint/PdfEngine/TestPdfEngine.php
rename to tests/modules/entity_print_test/src/Plugin/EntityPrint/PrintEngine/TestPrintEngine.php
index cd9c1c5..bff1322 100644
--- a/tests/modules/entity_print_test/src/Plugin/EntityPrint/PdfEngine/TestPdfEngine.php
+++ b/tests/modules/entity_print_test/src/Plugin/EntityPrint/PrintEngine/TestPrintEngine.php
@@ -1,23 +1,19 @@
 <?php
 
-/**
- * @file
- * Contains \Drupal\entity_print_test\Plugin\EntityPrint\PdfEngine\TestPdfEngine
- */
-
-namespace Drupal\entity_print_test\Plugin\EntityPrint\PdfEngine;
+namespace Drupal\entity_print_test\Plugin\EntityPrint\PrintEngine;
 
 use Drupal\Core\Form\FormStateInterface;
-use Drupal\entity_print\PdfEngineException;
-use Drupal\entity_print\Plugin\PdfEngineBase;
+use Drupal\entity_print\PrintEngineException;
+use Drupal\entity_print\Plugin\PrintEngineBase;
 
 /**
- * @PdfEngine(
- *   id = "testpdfengine",
- *   label= @Translation("Test PDF Engine")
+ * @PrintEngine(
+ *   id = "testprintengine",
+ *   label = @Translation("Test Print Engine"),
+ *   export_type = "pdf"
  * )
  */
-class TestPdfEngine extends PdfEngineBase {
+class TestPrintEngine extends PrintEngineBase {
 
   /**
    * @var string
@@ -35,8 +31,8 @@ class TestPdfEngine extends PdfEngineBase {
    * {@inheritdoc}
    */
   public function send($filename = NULL) {
-    // Echo the response and then flush, just like a PDF implementation would.
-    echo 'Using testpdfengine - ' . $this->configuration['test_engine_suffix'];
+    // Echo the response and then flush, just like a Prin implementation would.
+    echo 'Using testprintengine - ' . $this->configuration['test_engine_suffix'];
     echo $this->html;
     flush();
   }
diff --git a/tests/src/Unit/EntityPrintTest.php b/tests/src/Unit/EntityPrintTest.php
index 72bab53..751fa31 100644
--- a/tests/src/Unit/EntityPrintTest.php
+++ b/tests/src/Unit/EntityPrintTest.php
@@ -10,7 +10,7 @@ namespace Drupal\Tests\entity_print\Unit;
 use Drupal\Tests\UnitTestCase;
 
 /**
- * @coversDefaultClass \Drupal\entity_print\EntityPrintPdfBuilder
+ * @coversDefaultClass \Drupal\entity_print\PrintBuilder
  * @group entity_print
  */
 class EntityPrintTest extends UnitTestCase {
@@ -23,13 +23,13 @@ class EntityPrintTest extends UnitTestCase {
    */
   public function testGenerateFilename($entity_label, $expected_filename) {
     $entity = $this->getMockEntity($entity_label);
-    $pdf_builder = $this->getMockPdfBuilder();
+    $print_builder = $this->getMockPrintBuilder();
 
-    $reflection = new \ReflectionClass($pdf_builder);
+    $reflection = new \ReflectionClass($print_builder);
     $method = $reflection->getMethod('generateFilename');
-    $method->setAccessible(true);
+    $method->setAccessible(TRUE);
 
-    $this->assertEquals($expected_filename, $method->invoke($pdf_builder, $entity));
+    $this->assertEquals($expected_filename, $method->invoke($print_builder, $entity));
   }
 
   /**
@@ -50,16 +50,16 @@ class EntityPrintTest extends UnitTestCase {
   /**
    * Get a mock pdf builder.
    *
-   * @return \Drupal\entity_print\EntityPrintPdfBuilder
+   * @return \Drupal\entity_print\PrintBuilder
    *   The entity pdf builder mock.
    */
-  protected function getMockPdfBuilder() {
-    $pdf_builder = $this->getMockBuilder('Drupal\entity_print\EntityPrintPdfBuilder')
+  protected function getMockPrintBuilder() {
+    $print_builder = $this->getMockBuilder('Drupal\entity_print\PrintBuilder')
       ->disableOriginalConstructor()
       ->setMethods([])
       ->getMock();
 
-    return $pdf_builder;
+    return $print_builder;
   }
 
   /**
