Function: ps-end-job
ps-end-job is a byte-compiled function defined in ps-print.el.gz.
Signature
(ps-end-job NEEDS-BEGIN-FILE)
Source Code
;; Defined in /usr/src/emacs/lisp/ps-print.el.gz
(defun ps-end-job (needs-begin-file)
(let ((ps-print-page-p t))
(ps-flush-output)
(save-excursion
(let ((pages-per-sheet (mod ps-page-printed ps-n-up-printing))
(total-lines (cdr ps-printing-region))
(total-pages (ps-page-number)))
(set-buffer ps-spool-buffer)
(let (case-fold-search)
;; Back to the PS output buffer to set the last page n-up printing
(goto-char (point-max))
(and (> pages-per-sheet 0)
(re-search-backward "^[0-9]+ BeginSheet$" nil t)
(replace-match (format "%d BeginSheet" pages-per-sheet) t))
;; Back to the PS output buffer to set the page count
(goto-char (point-min))
(while (re-search-forward "^/Lines 0 def\n/PageCount 0 def$" nil t)
(replace-match (format "/Lines %d def\n/PageCount %d def"
total-lines total-pages) t)))))
;; Set dummy page
(and ps-spool-duplex (oddp ps-page-order)
(let ((ps-n-up-printing 0))
(ps-header-sheet)
(ps-output "/PrintHeader false def\n/ColumnIndex 0 def\n"
"/PrintLineNumber false def\n"
(number-to-string ps-lines-printed) " BeginPage\n")
(ps-end-page)))
;; Set end of PostScript file
(ps-end-sheet)
(ps-output "\n%%Trailer\n%%Pages: "
(number-to-string
(if (and needs-begin-file
ps-banner-page-when-duplexing)
(1+ ps-page-order)
ps-page-order))
"\n\nEndDoc\n\n%%EOF\n")
(and ps-end-with-control-d
(ps-output "\C-d"))
(ps-flush-output))
;; disable selected pages
(setq ps-selected-pages nil))