diff --git a/src/main/java/NTNU/IDATT1002/controllers/ViewAlbum.java b/src/main/java/NTNU/IDATT1002/controllers/ViewAlbum.java
index 4fbc5bbe0a4a7bcdd3eb2d3b544beef2ae19f492..499b4555a4b14ad8cd4d3cd429e92d7a61ed868b 100644
--- a/src/main/java/NTNU/IDATT1002/controllers/ViewAlbum.java
+++ b/src/main/java/NTNU/IDATT1002/controllers/ViewAlbum.java
@@ -2,9 +2,9 @@ package NTNU.IDATT1002.controllers;
 
 import NTNU.IDATT1002.App;
 import NTNU.IDATT1002.models.ImageAlbum;
+import NTNU.IDATT1002.service.ImageAlbumDocument;
 import NTNU.IDATT1002.service.ImageAlbumService;
 import NTNU.IDATT1002.service.TagService;
-import NTNU.IDATT1002.utils.PdfDocument;
 import javafx.application.HostServices;
 import javafx.event.ActionEvent;
 import javafx.fxml.FXML;
@@ -18,8 +18,6 @@ import javafx.scene.layout.Pane;
 import javafx.scene.shape.StrokeType;
 import javafx.scene.text.Font;
 import javafx.scene.text.Text;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import javax.persistence.EntityManager;
 import java.io.File;
@@ -49,7 +47,7 @@ public class ViewAlbum implements Initializable {
     public Text album_descField;
 
     public Pane metadata_pane;
-    public Button create_album_pdf;
+    public Button create_album_document;
 
     public ImageView main_picture;
 
@@ -70,13 +68,11 @@ public class ViewAlbum implements Initializable {
 
     private ImageAlbumService imageAlbumService;
     private Long currentAlbumId;
-    private Logger logger;
-    
+
     public ViewAlbum() {
         EntityManager entityManager = App.ex.getEntityManager();
         this.imageAlbumService =  new ImageAlbumService(entityManager);
         currentAlbumId = App.ex.getChosenAlbumId();
-        logger = LoggerFactory.getLogger("ImageApplicationLogger");
     }
 
     /**
@@ -372,24 +368,15 @@ public class ViewAlbum implements Initializable {
     }
 
     /**
-     * Create and save album pdf to users downloads directory.
+     * Retrieve and display album document.
      *
      * @param actionEvent
      */
-    public void createPdf(ActionEvent actionEvent) {
+    public void createDocument(ActionEvent actionEvent) {
         Long currentAlbumId = App.ex.getChosenAlbumId();
-        ImageAlbum imageAlbum = imageAlbumService.getImageAlbumById(currentAlbumId)
-                .orElseThrow(IllegalArgumentException::new);
-
-        String destinationFile = String.format("%s/downloads/%s.pdf",
-                System.getProperty("user.home"),
-                imageAlbum.getTitle());
-
-        PdfDocument document = new PdfDocument(imageAlbum, destinationFile);
-        document.createPdfDocument();
-        logger.info("[x] Saved PDF document to " + destinationFile);
+        ImageAlbumDocument document = imageAlbumService.getDocument(currentAlbumId);
 
-        displayPdfLink(document.getPdfDocument());
+        displayDocumentLink(document.getDocument());
     }
 
     /**
@@ -397,9 +384,9 @@ public class ViewAlbum implements Initializable {
      *
      * @param pdfDocument the pdf document to be opened
      */
-    private void displayPdfLink(File pdfDocument) {
-        create_album_pdf.setText("Open PDF");
-        create_album_pdf.setOnAction(actionEvent -> openPdfDocument(actionEvent, pdfDocument));
+    private void displayDocumentLink(File pdfDocument) {
+        create_album_document.setText("Open PDF");
+        create_album_document.setOnAction(actionEvent -> openDocument(actionEvent, pdfDocument));
     }
 
     /**
@@ -408,7 +395,7 @@ public class ViewAlbum implements Initializable {
      * @param actionEvent
      * @param file the file to open
      */
-    private void openPdfDocument(ActionEvent actionEvent, File file) {
+    private void openDocument(ActionEvent actionEvent, File file) {
         HostServices hostServices = App.ex.getHostServices();
         hostServices.showDocument(file.getAbsolutePath());
     }
diff --git a/src/main/java/NTNU/IDATT1002/service/ImageAlbumDocument.java b/src/main/java/NTNU/IDATT1002/service/ImageAlbumDocument.java
new file mode 100644
index 0000000000000000000000000000000000000000..133cb3fcc616b8d62f3ce34b51b08865bebf55a2
--- /dev/null
+++ b/src/main/java/NTNU/IDATT1002/service/ImageAlbumDocument.java
@@ -0,0 +1,17 @@
+package NTNU.IDATT1002.service;
+
+import java.io.File;
+
+/**
+ * Image Album Document Interface. Defines operations for getting and creating documents.
+ *
+ * @author Eirik Steira
+ * @version 1.0 30.03.20
+ */
+public interface ImageAlbumDocument {
+
+    File getDocument();
+
+    void createDocument();
+
+}
diff --git a/src/main/java/NTNU/IDATT1002/service/ImageAlbumService.java b/src/main/java/NTNU/IDATT1002/service/ImageAlbumService.java
index d5b5cd0ee9bb746561cc8ea71038769a64393dfc..172098968103033007b901220aa677242919f647 100644
--- a/src/main/java/NTNU/IDATT1002/service/ImageAlbumService.java
+++ b/src/main/java/NTNU/IDATT1002/service/ImageAlbumService.java
@@ -7,6 +7,8 @@ import NTNU.IDATT1002.models.Tag;
 import NTNU.IDATT1002.models.User;
 import NTNU.IDATT1002.repository.ImageAlbumRepository;
 import NTNU.IDATT1002.repository.TagRepository;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import javax.persistence.EntityManager;
 import java.util.ArrayList;
@@ -30,6 +32,7 @@ public class ImageAlbumService {
 
     private TagRepository tagRepository;
 
+    private Logger logger;
 
     /**
      * Inject entity manager instance to the repositories.
@@ -37,6 +40,7 @@ public class ImageAlbumService {
     public ImageAlbumService(EntityManager entityManager) {
         this.imageAlbumRepository = new ImageAlbumRepository(entityManager);
         this.tagRepository = new TagRepository(entityManager);
+        logger = LoggerFactory.getLogger("ImageApplicationLogger");
     }
 
     public Optional<ImageAlbum> getImageAlbumById(Long imageAlbumId) {
@@ -102,6 +106,27 @@ public class ImageAlbumService {
         return createImageAlbum(title, description, user, tags, new ArrayList<>());
     }
 
+    /**
+     * Create and return a new document for the image album with the given id.
+     * The document is saved to the users dowloads folder.
+     *
+     * @param albumId the album id to get a document for
+     * @return the document created
+     */
+    public ImageAlbumDocument getDocument(Long albumId) {
+        ImageAlbum imageAlbum = getImageAlbumById(albumId)
+                .orElseThrow(IllegalArgumentException::new);
+
+        String destinationFile = String.format("%s/downloads/%s.pdf",
+                System.getProperty("user.home"),
+                imageAlbum.getTitle());
+
+        ImageAlbumDocument document = new PdfDocument(imageAlbum, destinationFile);
+        document.createDocument();
+        logger.info("[x] Saved PDF document to " + destinationFile);
+
+        return document;
+    }
 
     /**
      * Retrieves all image albums created by the given user by username.
diff --git a/src/main/java/NTNU/IDATT1002/utils/PdfDocument.java b/src/main/java/NTNU/IDATT1002/service/PdfDocument.java
similarity index 97%
rename from src/main/java/NTNU/IDATT1002/utils/PdfDocument.java
rename to src/main/java/NTNU/IDATT1002/service/PdfDocument.java
index f407ecd68061d80721f80d2fc8110ec93267484b..390aed8622e3207f9657dcc7227bb7f4f24355a7 100644
--- a/src/main/java/NTNU/IDATT1002/utils/PdfDocument.java
+++ b/src/main/java/NTNU/IDATT1002/service/PdfDocument.java
@@ -1,4 +1,4 @@
-package NTNU.IDATT1002.utils;
+package NTNU.IDATT1002.service;
 
 import NTNU.IDATT1002.models.Image;
 import NTNU.IDATT1002.models.ImageAlbum;
@@ -18,7 +18,7 @@ import java.util.Date;
  * @author Eirik Steira
  * @version 1.0 22.03.20
  */
-public class PdfDocument {
+public class PdfDocument implements ImageAlbumDocument {
 
     /**
      * Height ratio satisfying a 16:9 ratio.
@@ -48,14 +48,14 @@ public class PdfDocument {
         this.document = new Document();
     }
 
-    public File getPdfDocument() {
+    public File getDocument() {
         return new File(DESTINATION_FILE);
     }
 
     /**
      * Create a new pdf document.
      */
-    public void createPdfDocument() {
+    public void createDocument() {
         try {
             generatePdfDocument();
         } catch (IOException | DocumentException e) {
diff --git a/src/main/resources/NTNU/IDATT1002/view_album.fxml b/src/main/resources/NTNU/IDATT1002/view_album.fxml
index 2a31bec933c22565f328130c2abb6ccfc924fede..08871ee0b36cc45e29224fde86003f6f37086b4c 100644
--- a/src/main/resources/NTNU/IDATT1002/view_album.fxml
+++ b/src/main/resources/NTNU/IDATT1002/view_album.fxml
@@ -104,7 +104,7 @@
                                         </font>
                                     </Text>
                                     <Pane fx:id="metadata_pane" layoutX="76.0" layoutY="371.0" prefHeight="391.0" prefWidth="822.0" style="-fx-background-color: #ffffff;" />
-                                    <Button fx:id="create_album_pdf" layoutX="394.0" layoutY="810.0" mnemonicParsing="false" onAction="#createPdf" text="CREATE ALBUM PDF">
+                                    <Button fx:id="create_album_document" layoutX="394.0" layoutY="810.0" mnemonicParsing="false" onAction="#createDocument" text="CREATE ALBUM PDF">
                                         <font>
                                             <Font size="18.0" />
                                         </font>
diff --git a/src/test/java/NTNU/IDATT1002/utils/PdfDocumentTest.java b/src/test/java/NTNU/IDATT1002/utils/PdfDocumentTest.java
index 54bbfdaad68bb33c25ce0d97f585abca1552208a..47fffd8056100019efcacade4bf5b12610a08e75 100644
--- a/src/test/java/NTNU/IDATT1002/utils/PdfDocumentTest.java
+++ b/src/test/java/NTNU/IDATT1002/utils/PdfDocumentTest.java
@@ -3,6 +3,7 @@ package NTNU.IDATT1002.utils;
 import NTNU.IDATT1002.models.Image;
 import NTNU.IDATT1002.models.ImageAlbum;
 import NTNU.IDATT1002.models.User;
+import NTNU.IDATT1002.service.PdfDocument;
 import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
@@ -19,13 +20,8 @@ import static org.junit.jupiter.api.Assertions.assertNotNull;
 class PdfDocumentTest {
 
     private static final String PATH_TO_PDF = "src/test/java/tmp/generatedImageAlbumPdf.pdf";
-
-    private static final String PATH_SEPARATOR = File.pathSeparator;
-
     private ImageAlbum imageAlbum;
-
     private Image image;
-
     private User user;
 
     /**
@@ -66,9 +62,9 @@ class PdfDocumentTest {
      * Test that a pdf document is successfully created.
      */
     @Test
-    void testCreatePdfDocumentCreatesPdfDocument() {
+    void testCreateDocumentCreatesPdfDocument() {
         PdfDocument document = new PdfDocument(imageAlbum, PATH_TO_PDF);
-        document.createPdfDocument();
+        document.createDocument();
 
         assertNotNull(document);
     }