diff --git gnucash/gnome-utils/Makefile.am gnucash/gnome-utils/Makefile.am
index c2ea84f..0929aef 100644
--- gnucash/gnome-utils/Makefile.am
+++ gnucash/gnome-utils/Makefile.am
@@ -21,7 +21,8 @@ AM_CPPFLAGS = \
   ${GUILE_CFLAGS} \
   ${LIBGDA_CFLAGS} \
   ${LIBXML2_CFLAGS} \
-  ${GTK_MAC_CFLAGS}
+  ${GTK_MAC_CFLAGS} \
+  ${WEBKIT_CFLAGS}
 
 libgncmod_gnome_utils_la_SOURCES = \
   account-quickfill.c \
@@ -199,6 +200,7 @@ libgncmod_gnome_utils_la_LIBADD = \
   ${top_builddir}/libgnucash/backend/xml/libgnc-backend-xml-utils.la \
   ${top_builddir}/libgnucash/app-utils/libgncmod-app-utils.la \
   $(top_builddir)/borrowed/libc/libc-missing.la \
+  ${WEBKIT_LIBS} \
   ${GTK_LIBS} \
   ${GNOME_KEYRING_LIBS} \
   ${LIBSECRET_LIBS} \
diff --git gnucash/html/Makefile.am gnucash/html/Makefile.am
index 9f78dae..4f0471a 100644
--- gnucash/html/Makefile.am
+++ gnucash/html/Makefile.am
@@ -40,9 +40,9 @@ libgncmod_html_la_LDFLAGS = -avoid-version
 
 libgncmod_html_la_LIBADD = \
   ${top_builddir}/libgnucash/core-utils/libgnc-core-utils.la \
+  ${top_builddir}/gnucash/gnome-utils/libgncmod-gnome-utils.la \
   ${top_builddir}/libgnucash/gnc-module/libgnc-module.la \
   ${top_builddir}/libgnucash/engine/libgncmod-engine.la \
-  ${top_builddir}/gnucash/gnome-utils/libgncmod-gnome-utils.la \
   ${top_builddir}/libgnucash/app-utils/libgncmod-app-utils.la \
   $(top_builddir)/borrowed/libc/libc-missing.la \
   ${WEBKIT_LIBS} \
diff --git gnucash/html/gnc-html-webkit2.c gnucash/html/gnc-html-webkit2.c
index a5ae409..553cff5 100644
--- gnucash/html/gnc-html-webkit2.c
+++ gnucash/html/gnc-html-webkit2.c
@@ -115,7 +115,7 @@ static void impl_webkit_show_data( GncHtml* self, const gchar* data, int datalen
 static void impl_webkit_reload( GncHtml* self, gboolean force_rebuild );
 static void impl_webkit_copy_to_clipboard( GncHtml* self );
 static gboolean impl_webkit_export_to_file( GncHtml* self, const gchar* filepath );
-static void impl_webkit_print (GncHtml* self);
+static void impl_webkit_print (GncHtml* self,const gchar* jobname);
 static void impl_webkit_cancel( GncHtml* self );
 static void impl_webkit_set_parent( GncHtml* self, GtkWindow* parent );
 static void impl_webkit_default_zoom_changed(gpointer prefs, gchar *pref, gpointer user_data);
@@ -1081,22 +1081,104 @@ impl_webkit_export_to_file( GncHtml* self, const char *filepath )
  * webkit_web_view_get_snapshot for each page.
  */
 static void
-impl_webkit_print (GncHtml* self)
+impl_webkit_print (GncHtml* self, const gchar* jobname)
 {
      WebKitPrintOperation *op = NULL;
      GtkWindow *top = NULL;
      GncHtmlWebkitPrivate *priv;
+     GtkPrintSettings *print_settings = NULL;
+     WebKitPrintOperationResponse print_response;
+     gchar *export_dirname = NULL;
+     gchar *export_filename = NULL;
+     gchar* basename;
 
      g_return_if_fail (self != NULL);
      g_return_if_fail (GNC_IS_HTML_WEBKIT (self));
 
      priv = GNC_HTML_WEBKIT_GET_PRIVATE (self);
      op = webkit_print_operation_new (priv->web_view);
+     DEBUG("Jobname is %s", jobname);
+     
+     // Set up a filename in case we want to export to PS,PDF...
+     //print_settings = webkit_print_operation_get_print_settings (op);
+     gtk_print_settings_load_file (print_settings, GNC_GTK_PRINT_SETTINGS_EXPORT_DIR, NULL);
+     if (!print_settings)
+     {
+        print_settings = gtk_print_settings_new();
+        webkit_print_operation_set_print_settings(op, print_settings);
+     }
+     
+     basename = g_path_get_basename(jobname);
+        if (strcmp(basename, jobname) != 0)
+        {
+            gchar *tmp_basename;
+            gchar *tmp_dirname = g_path_get_dirname(jobname);
+
+            if (g_file_test(tmp_dirname, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR))
+            {
+                // Yes, the jobname starts with a directory name that actually
+                // exists. Hence we use this as output directory.
+                export_dirname = tmp_dirname;
+                tmp_dirname = NULL;
+
+                // As the prefix part of the "jobname" is the directory path, we
+                // need to extract the suffix part for the filename.
+                tmp_basename = g_path_get_basename(export_filename);
+                g_free(export_filename);
+                export_filename = tmp_basename;
+            }
+            g_free(tmp_dirname);
+        }
+        g_free(basename);
+
+        // Do we have a stored output directory?
+        if (!export_dirname && gtk_print_settings_has_key(print_settings, GNC_GTK_PRINT_SETTINGS_EXPORT_DIR))
+        {
+            const char* tmp_dirname = gtk_print_settings_get(print_settings,
+                                      GNC_GTK_PRINT_SETTINGS_EXPORT_DIR);
+            // Only use the directory subsequently if it exists.
+            if (g_file_test(tmp_dirname, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR))
+            {
+                export_dirname = g_strdup(tmp_dirname);
+            }
+        }
+
+     // If we have an already existing directory, propose it now.
+     if (export_dirname)
+     {
+       gtk_print_settings_set(print_settings,
+                                   GTK_PRINT_SETTINGS_OUTPUT_DIR, export_dirname);
+     }
+     g_free(export_dirname);
+
+
+     export_filename = g_strdup(jobname);
+     gtk_print_settings_set(print_settings,
+                         GTK_PRINT_SETTINGS_OUTPUT_BASENAME,
+                         export_filename);
+     webkit_print_operation_set_print_settings (op, print_settings);
+     
+     
+
      top = GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (self)));
-     webkit_print_operation_run_dialog (op, top);
+     print_response = webkit_print_operation_run_dialog (op, top);
+
+     // Remember to save the printing settings after this print job
+     /** Key for saving the PDF-export directory in the print settings */
+     //GNC_GTK_PRINT_SETTINGS_EXPORT_DIR "gnc-pdf-export-directory"
+     if(print_response == WEBKIT_PRINT_OPERATION_RESPONSE_PRINT)
+     {
+          print_settings = webkit_print_operation_get_print_settings (op);
+          gtk_print_settings_to_file(print_settings,
+                     GNC_GTK_PRINT_SETTINGS_EXPORT_DIR,
+                     NULL);  
+     }
+     // TODO
      g_object_unref (op);
 }
 
+
+
 static void
 impl_webkit_set_parent( GncHtml* self, GtkWindow* parent )
 {
diff --git gnucash/html/gnc-html-webkit2.h gnucash/html/gnc-html-webkit2.h
index c2cec58..f19f234 100644
--- gnucash/html/gnc-html-webkit2.h
+++ gnucash/html/gnc-html-webkit2.h
@@ -39,6 +39,9 @@ typedef struct _GncHtmlWebkit GncHtmlWebkit;
 typedef struct _GncHtmlWebkitClass GncHtmlWebkitClass;
 typedef struct _GncHtmlWebkitPrivate GncHtmlWebkitPrivate;
 
+/** Key for saving the PDF-export directory in the print settings */
+#define GNC_GTK_PRINT_SETTINGS_EXPORT_DIR "gnc-pdf-export-directory"
+
 struct _GncHtmlWebkit
 {
     GncHtml parent_instance;
diff --git gnucash/html/gnc-html.c gnucash/html/gnc-html.c
index 6283749..985ab18 100644
--- gnucash/html/gnc-html.c
+++ gnucash/html/gnc-html.c
@@ -535,10 +535,11 @@ void
 gnc_html_print (GncHtml* self, const char *jobname, gboolean export_pdf)
 #else
 void
-gnc_html_print (GncHtml* self)
+gnc_html_print (GncHtml* self, const char *jobname)
 #endif
 {
     g_return_if_fail( self != NULL );
+     g_return_if_fail( jobname != NULL );
     g_return_if_fail( GNC_IS_HTML(self) );
 
     if ( GNC_HTML_GET_CLASS(self)->print != NULL )
@@ -546,7 +547,7 @@ gnc_html_print (GncHtml* self)
 #ifdef WEBKIT1
       GNC_HTML_GET_CLASS(self)->print (self, jobname, export_pdf);
 #else
-        GNC_HTML_GET_CLASS(self)->print (self);
+        GNC_HTML_GET_CLASS(self)->print (self, jobname);
 #endif
     }
     else
diff --git gnucash/html/gnc-html.h gnucash/html/gnc-html.h
index 8f32a3b..6ba1bcd 100644
--- gnucash/html/gnc-html.h
+++ gnucash/html/gnc-html.h
@@ -138,7 +138,7 @@ struct _GncHtmlClass
 #ifdef WEBKIT1
   void (*print) (GncHtml* html, const gchar* jobname, gboolean export_pdf);
 #else
-    void (*print) (GncHtml* html);
+    void (*print) (GncHtml* html, const gchar* jobname);
 #endif
     void (*cancel)( GncHtml* html );
     URLType (*parse_url)( GncHtml* html, const gchar* url,
@@ -217,7 +217,7 @@ void gnc_html_print (GncHtml* html, const char* jobname, gboolean export_pdf);
  *
  * @param html GncHtml object
  */
-void gnc_html_print (GncHtml* html);
+void gnc_html_print (GncHtml* html, const char* jobname);
 #endif
 /**
  * Cancels the current operation
diff --git gnucash/report/report-gnome/gnc-plugin-page-report.c gnucash/report/report-gnome/gnc-plugin-page-report.c
index 3493600..6d82740 100644
--- gnucash/report/report-gnome/gnc-plugin-page-report.c
+++ gnucash/report/report-gnome/gnc-plugin-page-report.c
@@ -1131,11 +1131,7 @@ gnc_plugin_page_report_constr_init(GncPluginPageReport *plugin_page, gint report
             N_("Print the current report"),
             G_CALLBACK(gnc_plugin_page_report_print_cb)
         },
-        {
-            "FilePrintPDFAction", GNC_ICON_PDF_EXPORT, N_("Export as P_DF..."), NULL,
-            N_("Export the current report as a PDF document"),
-            G_CALLBACK(gnc_plugin_page_report_exportpdf_cb)
-        },
+
         {
             "EditCutAction", "edit-cut", N_("Cu_t"), "<primary>X",
             N_("Cut the current selection and copy it to clipboard"),
@@ -1835,7 +1831,7 @@ gnc_plugin_page_report_print_cb( GtkAction *action, GncPluginPageReport *report
 #ifdef WEBKIT1
     gnc_html_print (priv->html, job_name, TRUE);
 #else
-    gnc_html_print (priv->html);
+    gnc_html_print (priv->html, job_name);
 #endif
 
     g_free (job_name);
@@ -1878,7 +1874,7 @@ gnc_plugin_page_report_exportpdf_cb( GtkAction *action, GncPluginPageReport *rep
 #ifdef WEBKIT1
     gnc_html_print (priv->html, job_name, TRUE);
 #else
-    gnc_html_print (priv->html);
+    gnc_html_print (priv->html, job_name);
 #endif
 
     if (owner)
