diff --git a/img/about.png b/img/about.png
new file mode 100644
index 0000000..766b8da
Binary files /dev/null and b/img/about.png differ
diff --git a/img/export.png b/img/export.png
new file mode 100644
index 0000000..4bf2cba
Binary files /dev/null and b/img/export.png differ
diff --git a/img/exportall.png b/img/exportall.png
new file mode 100644
index 0000000..50011dd
Binary files /dev/null and b/img/exportall.png differ
diff --git a/img/hpdf.png b/img/hpdf.png
new file mode 100644
index 0000000..bdf001a
Binary files /dev/null and b/img/hpdf.png differ
diff --git a/src/pdf_file.cpp b/src/pdf_file.cpp
new file mode 100644
index 0000000..56affc5
--- /dev/null
+++ b/src/pdf_file.cpp
@@ -0,0 +1,29 @@
+#include <QtGlobal>
+#include <QtWidgets>
+#include "pdf_file.h"
+
+PDFFile::PDFFile(const QString& fileName) {
+  /* Load PDF file. */
+  document = Poppler::Document::load(fileName);
+  if(!document || document->isLocked()) {
+    delete document;
+  }
+}
+
+QImage* PDFFile::getPageImage(int pageNumber) {
+  if(document == 0)
+    return NULL;
+
+  Poppler::Page* pdfPage = document->page(pageNumber);
+
+  if(pdfPage == 0)
+    return NULL;
+
+  QImage* image = new QImage();
+  *image = pdfPage->renderToImage();
+
+  delete pdfPage;
+
+  return image;
+}
+
diff --git a/src/pdf_file.h b/src/pdf_file.h
new file mode 100644
index 0000000..2cd240b
--- /dev/null
+++ b/src/pdf_file.h
@@ -0,0 +1,18 @@
+#pragma once
+#include <QObject>
+#include <poppler-qt5.h>
+
+class QString;
+class QImage;
+
+class PDFFile : public QObject {
+  Q_OBJECT
+public:
+  PDFFile(const QString& fileName);
+  QImage* getPageImage(int pageNumber);
+
+private:
+  Poppler::Document* document;
+  QString fileName;
+};
+
diff --git a/src/pdf_page_widget.cpp b/src/pdf_page_widget.cpp
new file mode 100644
index 0000000..4a09511
--- /dev/null
+++ b/src/pdf_page_widget.cpp
@@ -0,0 +1,20 @@
+#include <QtWidgets>
+#include "pdf_page_widget.h"
+
+PDFPageWidget::PDFPageWidget(QWidget* parent) :
+    QWidget(parent) {
+
+  this->resize(500, 600);
+}
+
+void PDFPageWidget::setPageImage(QImage* pageImage) {
+  image = pageImage;
+  pixmap = QPixmap::fromImage(*image);
+  update();
+}
+
+void PDFPageWidget::paintEvent(QPaintEvent* event) {
+  QPainter painter(this);
+  painter.drawPixmap(QRect(0, 0, pixmap.width(), pixmap.height()), pixmap);
+}
+
diff --git a/src/pdf_page_widget.h b/src/pdf_page_widget.h
new file mode 100644
index 0000000..bb3e35d
--- /dev/null
+++ b/src/pdf_page_widget.h
@@ -0,0 +1,21 @@
+#pragma once
+#include <QWidget>
+
+class QImage;
+class QPixmap;
+class QPaintEvent;
+
+class PDFPageWidget : public QWidget {
+  Q_OBJECT
+public:
+  PDFPageWidget(QWidget* parent = 0);
+  void setPageImage(QImage* pageImage);
+
+protected:
+  void paintEvent(QPaintEvent* event);
+
+private:
+  QImage* image;
+  QPixmap pixmap;
+};
+