This patch modifies `gstoraster` to include the TotalPageCount field in
generated PWG-Raster content:
https://issuetracker.google.com/issues/172225466

--- a/filter/gstoraster.c
+++ b/filter/gstoraster.c
@@ -713,8 +713,13 @@ main (int argc, char **argv, char *envp[])
     goto out;
   }
 
+  /*
+   * Count pages.
+   * Later passed to GhostScript as cupsInteger[0].
+   */
+  int pages = 0;
   if (doc_type == GS_DOC_TYPE_PDF) {  
-    int pages = pdf_pages(filename);
+    pages = pdf_pages(filename);
 
     if (pages == 0) {
       fprintf(stderr, "DEBUG: No pages left, outputting empty file.\n");
@@ -879,6 +884,13 @@ main (int argc, char **argv, char *envp[])
 #endif /* HAVE_CUPS_1_7 */
   }
 
+  /*
+   * cupsRasterParseIPPOptions() would populate the TotalPageCount field
+   * (h.cupsInteger[0]) if CUPS passed "job-impressions" to this filter.
+   * CUPS does not do so, so we set it manually here.
+   */
+  h.cupsInteger[0] = pages;
+
   if ((h.HWResolution[0] == 100) && (h.HWResolution[1] == 100)) {
     /* No "Resolution" option */
     if (ppd && (attr = ppdFindAttr(ppd, "DefaultResolution", 0)) != NULL) {
