diff -up cups-1.3.7/filter/pstops.c.str3415 cups-1.3.7/filter/pstops.c --- cups-1.3.7/filter/pstops.c.str3415 2008-01-14 22:12:58.000000000 +0000 +++ cups-1.3.7/filter/pstops.c 2010-09-01 15:51:16.206071056 +0100 @@ -1923,7 +1923,32 @@ do_setup(pstops_doc_t *doc, /* I - Docu ppd_file_t *ppd) /* I - PPD file */ { char *ps; /* PS commands */ - + ppd_size_t *pagesize; /* Current page size */ + float LabelPageLeft = PageLeft, + LabelPageRight = PageRight, + LabelPageBottom = PageBottom, + LabelPageTop = PageTop, + LabelPageWidth = PageWidth, + LabelPageLength = PageLength; + + /* + * We want to place the labels at the edge of the imageable area, so + * we need to get those values (and not the one from the text margins) + */ + + if ((pagesize = ppdPageSize(ppd, NULL)) != NULL) + { + LabelPageWidth = pagesize->width; + LabelPageLength = pagesize->length; + LabelPageTop = pagesize->top; + LabelPageBottom = pagesize->bottom; + LabelPageLeft = pagesize->left; + LabelPageRight = pagesize->right; + + fprintf(stderr, "DEBUG: Label Page = %.0fx%.0f; %.0f,%.0f to %.0f,%.0f\n", + LabelPageWidth, LabelPageLength, LabelPageLeft, LabelPageBottom, + LabelPageRight, LabelPageTop); + } /* * Disable CTRL-D so that embedded files don't cause printing @@ -2021,14 +2046,16 @@ do_setup(pstops_doc_t *doc, /* I - Docu */ if (Orientation & 1) - write_label_prolog(doc, doc->page_label, PageBottom, - PageWidth - PageLength + PageTop, PageLength); + write_label_prolog(doc, doc->page_label, LabelPageBottom, + LabelPageWidth - LabelPageLength + LabelPageTop, + LabelPageLength); else - write_label_prolog(doc, doc->page_label, PageLeft, PageRight, - PageLength); + write_label_prolog(doc, doc->page_label, LabelPageLeft, LabelPageRight, + LabelPageLength); } else - write_label_prolog(doc, doc->page_label, PageBottom, PageTop, PageWidth); + write_label_prolog(doc, doc->page_label, LabelPageBottom, LabelPageTop, + LabelPageWidth); }