diff options
author | Carlos Garcia Campos <carlosgc@gnome.org> | 2007-08-25 15:55:07 (GMT) |
---|---|---|
committer | Carlos Garcia Campos <carlosgc@src.gnome.org> | 2007-08-25 15:55:07 (GMT) |
commit | a50e3f1032fe4e868c92668477aea37bb86052d6 (patch) | |
tree | 47134389e1f81c406894d11eb731ed60ebd8acbe /backend/pdf | |
parent | aa5d60b07e188daa855d269e7e9b2da4388ed070 (diff) |
Adjust number of pages per row according to page orientation when printing
2007-08-25 Carlos Garcia Campos <carlosgc@gnome.org>
* backend/pdf/ev-poppler.cc: (pdf_document_file_exporter_begin):
* libdocument/ev-file-exporter.[ch]:
(ev_file_exporter_get_capabilities):
* shell/ev-jobs.[ch]: (ev_job_print_new), (ev_job_print_run):
* shell/ev-window.c: (ev_window_print_dialog_response_cb):
Adjust number of pages per row according to page orientation when
printing 2 or 6 pages per sheet.
svn path=/trunk/; revision=2641
Diffstat (limited to 'backend/pdf')
-rw-r--r-- | backend/pdf/ev-poppler.cc | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/backend/pdf/ev-poppler.cc b/backend/pdf/ev-poppler.cc index 8af07fd..cc6137b 100644 --- a/backend/pdf/ev-poppler.cc +++ b/backend/pdf/ev-poppler.cc @@ -1579,7 +1579,7 @@ pdf_document_file_exporter_begin (EvFileExporter *exporter, PdfDocument *pdf_document = PDF_DOCUMENT (exporter); PdfPrintContext *ctx; gdouble width, height; - gboolean change_orient = FALSE; + gboolean landscape, change_orient = FALSE; #ifdef HAVE_CAIRO_PRINT cairo_surface_t *surface = NULL; #endif @@ -1591,6 +1591,8 @@ pdf_document_file_exporter_begin (EvFileExporter *exporter, ctx->format = fc->format; ctx->pages_per_sheet = fc->pages_per_sheet; + landscape = (fc->orientation == EV_FILE_EXPORTER_LANDSCAPE); + switch (fc->pages_per_sheet) { default: case 1: @@ -1599,8 +1601,9 @@ pdf_document_file_exporter_begin (EvFileExporter *exporter, break; case 2: change_orient = TRUE; - ctx->pages_x = 2; - ctx->pages_y = 1; + landscape = !landscape; + ctx->pages_x = 1; + ctx->pages_y = 2; break; case 4: ctx->pages_x = 2; @@ -1608,8 +1611,9 @@ pdf_document_file_exporter_begin (EvFileExporter *exporter, break; case 6: change_orient = TRUE; - ctx->pages_x = 3; - ctx->pages_y = 2; + landscape = !landscape; + ctx->pages_x = 2; + ctx->pages_y = 3; break; case 9: ctx->pages_x = 3; @@ -1628,7 +1632,15 @@ pdf_document_file_exporter_begin (EvFileExporter *exporter, width = fc->paper_width; height = fc->paper_height; } + + if (landscape) { + gint tmp; + tmp = ctx->pages_x; + ctx->pages_x = ctx->pages_y; + ctx->pages_y = tmp; + } + ctx->page_width = width / ctx->pages_x; ctx->page_height = height / ctx->pages_y; |