File paps-page_setup.patch of Package paps

Help modern PostScript viewers to display paps output

---
 src/paps.c |   33 ++++++++++++++++++++++++++++++++-
 1 file changed, 32 insertions(+), 1 deletion(-)

--- src/paps.c
+++ src/paps.c	2017-12-05 14:23:59.320984437 +0000
@@ -112,6 +112,7 @@ typedef struct {
   int header_sep;
   int header_height;
   int footer_height;
+  paper_type_t paper_type;
   gdouble scale_x;
   gdouble scale_y;
   gboolean do_draw_header;
@@ -700,6 +701,7 @@ int main(int argc, char *argv[])
   
   page_layout.page_width = page_width;
   page_layout.page_height = page_height;
+  page_layout.paper_type = paper_type;
   page_layout.num_columns = num_columns;
   page_layout.left_margin = left_margin;
   page_layout.right_margin = right_margin;
@@ -1163,6 +1165,17 @@ postscript_dsc_comments(cairo_surface_t
       else
         cairo_ps_surface_dsc_comment(surface, "%%IncludeFeature: *Duplex DuplexNoTumble");
     }
+  else
+    cairo_ps_surface_dsc_begin_setup(surface);
+
+  if (pl->paper_type == PAPER_TYPE_US_LEGAL)
+    cairo_ps_surface_dsc_comment (surface, "%%IncludeFeature: *PageSize Legal");
+  if (pl->paper_type == PAPER_TYPE_US_LETTER)
+    cairo_ps_surface_dsc_comment (surface, "%%IncludeFeature: *PageSize Letter");
+  if (pl->paper_type == PAPER_TYPE_A4)
+    cairo_ps_surface_dsc_comment (surface, "%%IncludeFeature: *PageSize A4");
+  if (pl->paper_type == PAPER_TYPE_A3)
+    cairo_ps_surface_dsc_comment (surface, "%%IncludeFeature: *PageSize A3");
 }
 
 
@@ -1280,7 +1293,25 @@ void start_page(cairo_surface_t *surface
   cairo_identity_matrix(cr);
 
   if (output_format == FORMAT_POSTSCRIPT)
-    cairo_ps_surface_dsc_begin_page_setup (surface);
+    {
+      char buf[CAIRO_COMMENT_MAX];
+      int x, y;
+
+      if (page_layout->do_landscape)
+	{
+	  x = (int)page_layout->page_height;
+	  y = (int)page_layout->page_width;
+	}
+      else
+	{
+	  x = (int)page_layout->page_width;
+	  y = (int)page_layout->page_height;
+	}
+      cairo_ps_surface_dsc_begin_page_setup (surface);
+
+      snprintf(buf, CAIRO_COMMENT_MAX, "%%%%PageBoundingBox: 0 0 %d %d", x, y);
+      cairo_ps_surface_dsc_comment (surface, buf);
+    }
 
   if (page_layout->do_landscape)
     {
openSUSE Build Service is sponsored by