Index: modules/printbackends/file/gtkprintbackendfile.c
===================================================================
--- modules/printbackends/file/gtkprintbackendfile.c	(revisión: 17878)
+++ modules/printbackends/file/gtkprintbackendfile.c	(copia de trabajo)
@@ -480,7 +480,9 @@ file_printer_get_options (GtkPrinter    
 {
   GtkPrinterOptionSet *set;
   GtkPrinterOption *option;
-  const gchar *n_up[] = { "1" };
+  const gchar *n_up[] = {"1", "2", "4", "6", "9", "16" };
+  gint n_pages_per_sheet = 1;
+  const gchar *pages_per_sheet;
   const gchar *format_names[N_FORMATS] = { N_("PDF"), N_("Postscript") };
   const gchar *supported_formats[N_FORMATS];
   gchar *display_format_names[N_FORMATS];
@@ -494,9 +496,15 @@ file_printer_get_options (GtkPrinter    
   set = gtk_printer_option_set_new ();
 
   option = gtk_printer_option_new ("gtk-n-up", _("Pages per _sheet:"), GTK_PRINTER_OPTION_TYPE_PICKONE);
-  gtk_printer_option_choices_from_array (option, G_N_ELEMENTS (n_up),
+  if (capabilities & GTK_PRINT_CAPABILITY_NUMBER_UP)
+    n_pages_per_sheet = G_N_ELEMENTS (n_up);
+  gtk_printer_option_choices_from_array (option, n_pages_per_sheet,
 					 (char **) n_up, (char **) n_up /* FIXME i18n (localised digits)! */);
-  gtk_printer_option_set (option, "1");
+  pages_per_sheet = gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_NUMBER_UP);
+  if (pages_per_sheet)
+    gtk_printer_option_set (option, pages_per_sheet);
+  else
+    gtk_printer_option_set (option, "1");
   gtk_printer_option_set_add (set, option);
   g_object_unref (option);
 
@@ -572,7 +580,10 @@ file_printer_get_settings_from_options (
   option = gtk_printer_option_set_lookup (options, "output-file-format");
   if (option)
     gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_OUTPUT_FILE_FORMAT, option->value);
-    
+
+  option = gtk_printer_option_set_lookup (options, "gtk-n-up");
+  if (option)
+    gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_NUMBER_UP, option->value);
 }
 
 static void
Index: gtk/gtkprinter.h
===================================================================
--- gtk/gtkprinter.h	(revisión: 17878)
+++ gtk/gtkprinter.h	(copia de trabajo)
@@ -40,7 +40,8 @@ typedef enum
   GTK_PRINT_CAPABILITY_SCALE        = 1 << 4,
   GTK_PRINT_CAPABILITY_GENERATE_PDF = 1 << 5,
   GTK_PRINT_CAPABILITY_GENERATE_PS  = 1 << 6,
-  GTK_PRINT_CAPABILITY_PREVIEW      = 1 << 7
+  GTK_PRINT_CAPABILITY_PREVIEW      = 1 << 7,
+  GTK_PRINT_CAPABILITY_NUMBER_UP    = 1 << 8
 } GtkPrintCapabilities;
 
 GType gtk_print_capabilities_get_type (void) G_GNUC_CONST;
Index: gtk/gtkprinter.c
===================================================================
--- gtk/gtkprinter.c	(revisión: 17878)
+++ gtk/gtkprinter.c	(copia de trabajo)
@@ -1086,6 +1086,7 @@ gtk_print_capabilities_get_type (void)
         { GTK_PRINT_CAPABILITY_GENERATE_PDF, "GTK_PRINT_CAPABILITY_GENERATE_PDF", "generate-pdf" },
         { GTK_PRINT_CAPABILITY_GENERATE_PS, "GTK_PRINT_CAPABILITY_GENERATE_PS", "generate-ps" },
         { GTK_PRINT_CAPABILITY_PREVIEW, "GTK_PRINT_CAPABILITY_PREVIEW", "preview" },
+	{ GTK_PRINT_CAPABILITY_NUMBER_UP, "GTK_PRINT_CAPABILITY_NUMBER_UP", "number-up"},
         { 0, NULL, NULL }
       };
 
Index: docs/reference/gtk/tmpl/gtkprintunixdialog.sgml
===================================================================
--- docs/reference/gtk/tmpl/gtkprintunixdialog.sgml	(revisión: 17878)
+++ docs/reference/gtk/tmpl/gtkprintunixdialog.sgml	(copia de trabajo)
@@ -171,7 +171,7 @@ specified, GTK+ assumes that all formats
 @GTK_PRINT_CAPABILITY_GENERATE_PDF: The program will send the document to the printer in PDF format
 @GTK_PRINT_CAPABILITY_GENERATE_PS: The program will send the document to the printer in Postscript format
 @GTK_PRINT_CAPABILITY_PREVIEW: 
-
+@GTK_PRINT_CAPABILITY_NUMBER_UP: Since 2.12
 <!-- ##### FUNCTION gtk_print_unix_dialog_set_manual_capabilities ##### -->
 <para>
 
