output-item: Make label a part of every output_item.
[pspp] / src / output / cairo-pager.c
index 6249a3ab8e09829a5aecff5df351b5f4625007cc..e87ec325248f2cff94d2fbdd2c57d7d1febc6a07 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);
 }
 
@@ -443,27 +451,8 @@ xr_pager_run (struct xr_pager *p)
                     }
                   p->n_opens = 0;
 
-                  const char *text;
-                  if (is_table_item (p->item))
-                    {
-                      const struct table_item_text *title
-                        = table_item_get_title (to_table_item (p->item));
-                      text = title ? title->content : "Table";
-                    }
-                  else if (is_chart_item (p->item))
-                    {
-                      const char *title
-                        = chart_item_get_title (to_chart_item (p->item));
-                      text = title ? title : "Chart";
-                    }
-                  else
-                    text = (is_page_eject_item (p->item) ? "Page Break"
-                            : is_page_setup_item (p->item) ? "Page Setup"
-                            : is_message_item (p->item) ? "Message"
-                            : is_text_item (p->item) ? "Text"
-                            : NULL);
-                  if (text)
-                    add_outline (p->cr, parent_group_id, text, attrs, 0);
+                  add_outline (p->cr, parent_group_id,
+                               output_item_get_label (p->item), attrs, 0);
                   free (attrs);
                 }
               free (dest_name);