cairo: Label pages in PDFs with page numbers.
authorBen Pfaff <blp@cs.stanford.edu>
Sun, 27 Dec 2020 01:54:07 +0000 (17:54 -0800)
committerBen Pfaff <blp@cs.stanford.edu>
Sun, 27 Dec 2020 01:54:07 +0000 (17:54 -0800)
These normally wouldn't do much, but PSPP does support an "initial page
number" setting, and if that is set to anything but 1 then it will make
a difference.

src/output/cairo-pager.c

index 6249a3ab8e09829a5aecff5df351b5f4625007cc..1ab481f0c3930f1108171a478fa1120592ec04a7 100644 (file)
@@ -322,6 +322,14 @@ xr_pager_add_page (struct xr_pager *p, cairo_t *cr)
                             fs->size[H], fs->size[V] + ps->object_spacing,
                             fs->font_resolution);
 
+  cairo_surface_t *surface = cairo_get_target (cr);
+  if (cairo_surface_get_type (surface) == CAIRO_SURFACE_TYPE_PDF)
+    {
+      char *page_label = xasprintf ("%d", page_number);
+      cairo_pdf_surface_set_page_label (surface, page_label);
+      free (page_label);
+    }
+
   xr_pager_run (p);
 }