From f7e355c8f2621f8026a9461a25ee4e1d60b28bb7 Mon Sep 17 00:00:00 2001 From: Carlos Garcia Campos Date: Fri, 26 Oct 2007 14:47:14 +0000 Subject: [PATCH] Fix printing with poppler splash backend. Fixes bug #489774. 2007-10-24 Carlos Garcia Campos * backend/pdf/ev-poppler.cc: (pdf_document_file_exporter_begin), (pdf_document_file_exporter_begin_page), (pdf_document_file_exporter_end_page): Fix printing with poppler splash backend. Fixes bug #489774. svn path=/trunk/; revision=2721 --- ChangeLog | 8 ++++++++ backend/pdf/ev-poppler.cc | 34 +++++++++++++++++++++------------- 2 files changed, 29 insertions(+), 13 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0485e7c7..6d38e74d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -5,6 +5,14 @@ Let GnomeVFS check the URL, this allow more URL (like mailto:), and report error if the URL is not supported (#489910). +2007-10-24 Carlos Garcia Campos + + * backend/pdf/ev-poppler.cc: (pdf_document_file_exporter_begin), + (pdf_document_file_exporter_begin_page), + (pdf_document_file_exporter_end_page): + + Fix printing with poppler splash backend. Fixes bug #489774. + 2007-10-22 Carlos Garcia Campos * backend/pdf/ev-poppler.cc: (pdf_document_file_exporter_begin): diff --git a/backend/pdf/ev-poppler.cc b/backend/pdf/ev-poppler.cc index c7f4eeed..c4baa99f 100644 --- a/backend/pdf/ev-poppler.cc +++ b/backend/pdf/ev-poppler.cc @@ -48,7 +48,7 @@ #include "ev-attachment.h" #include "ev-image.h" -#if defined (HAVE_CAIRO_PDF) || defined (HAVE_CAIRO_PS) +#if (defined (HAVE_POPPLER_PAGE_RENDER) || defined (HAVE_POPPLER_PAGE_RENDER_FOR_PRINTING)) && (defined (HAVE_CAIRO_PDF) || defined (HAVE_CAIRO_PS)) #define HAVE_CAIRO_PRINT #endif @@ -1520,8 +1520,8 @@ pdf_document_file_exporter_begin (EvFileExporter *exporter, { PdfDocument *pdf_document = PDF_DOCUMENT (exporter); PdfPrintContext *ctx; - gdouble width, height; #ifdef HAVE_CAIRO_PRINT + gdouble width, height; cairo_surface_t *surface = NULL; #endif @@ -1530,6 +1530,8 @@ pdf_document_file_exporter_begin (EvFileExporter *exporter, pdf_document->print_ctx = g_new0 (PdfPrintContext, 1); ctx = pdf_document->print_ctx; ctx->format = fc->format; + +#ifdef HAVE_CAIRO_PRINT ctx->pages_per_sheet = CLAMP (fc->pages_per_sheet, 1, 16); ctx->paper_width = fc->paper_width; @@ -1564,18 +1566,12 @@ pdf_document_file_exporter_begin (EvFileExporter *exporter, } ctx->pages_printed = 0; - + switch (fc->format) { case EV_FILE_FORMAT_PS: #ifdef HAVE_CAIRO_PS surface = cairo_ps_surface_create (fc->filename, fc->paper_width, fc->paper_height); -#else - ctx->ps_file = poppler_ps_file_new (pdf_document->document, - fc->filename, fc->first_page, - fc->last_page - fc->first_page + 1); - poppler_ps_file_set_paper_size (ctx->ps_file, fc->paper_width, fc->paper_height); - poppler_ps_file_set_duplex (ctx->ps_file, fc->duplex); -#endif /* HAVE_CAIRO_PS */ +#endif break; case EV_FILE_FORMAT_PDF: #ifdef HAVE_CAIRO_PDF @@ -1586,10 +1582,18 @@ pdf_document_file_exporter_begin (EvFileExporter *exporter, g_assert_not_reached (); } -#ifdef HAVE_CAIRO_PRINT ctx->cr = cairo_create (surface); cairo_surface_destroy (surface); -#endif + +#else /* HAVE_CAIRO_PRINT */ + if (ctx->format == EV_FILE_FORMAT_PS) { + ctx->ps_file = poppler_ps_file_new (pdf_document->document, + fc->filename, fc->first_page, + fc->last_page - fc->first_page + 1); + poppler_ps_file_set_paper_size (ctx->ps_file, fc->paper_width, fc->paper_height); + poppler_ps_file_set_duplex (ctx->ps_file, fc->duplex); + } +#endif /* HAVE_CAIRO_PRINT */ } static void @@ -1601,7 +1605,8 @@ pdf_document_file_exporter_begin_page (EvFileExporter *exporter) g_return_if_fail (pdf_document->print_ctx != NULL); ctx->pages_printed = 0; - + +#ifdef HAVE_CAIRO_PRINT if (ctx->paper_width > ctx->paper_height) { if (ctx->format == EV_FILE_FORMAT_PS) { cairo_ps_surface_set_size (cairo_get_target (ctx->cr), @@ -1613,6 +1618,7 @@ pdf_document_file_exporter_begin_page (EvFileExporter *exporter) ctx->paper_width); } } +#endif /* HAVE_CAIRO_PRINT */ } static void @@ -1739,7 +1745,9 @@ pdf_document_file_exporter_end_page (EvFileExporter *exporter) g_return_if_fail (pdf_document->print_ctx != NULL); +#ifdef HAVE_CAIRO_PRINT cairo_show_page (ctx->cr); +#endif } static void -- 2.43.5