aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lisp/ps-print.el69
1 files changed, 38 insertions, 31 deletions
diff --git a/lisp/ps-print.el b/lisp/ps-print.el
index 06d56c0effa..3a14bcc57f4 100644
--- a/lisp/ps-print.el
+++ b/lisp/ps-print.el
@@ -7,11 +7,11 @@
7;; Author: Vinicius Jose Latorre <vinicius@cpqd.com.br> 7;; Author: Vinicius Jose Latorre <vinicius@cpqd.com.br>
8;; Maintainer: Vinicius Jose Latorre <vinicius@cpqd.com.br> 8;; Maintainer: Vinicius Jose Latorre <vinicius@cpqd.com.br>
9;; Keywords: print, PostScript 9;; Keywords: print, PostScript
10;; Time-stamp: <98/05/22 21:11:07 vinicius> 10;; Time-stamp: <98/06/04 15:23:12 vinicius>
11;; Version: 3.06.2 11;; Version: 3.06.3
12 12
13(defconst ps-print-version "3.06.2" 13(defconst ps-print-version "3.06.3"
14 "ps-print.el, v 3.06.2 <98/05/22 vinicius> 14 "ps-print.el, v 3.06.3 <98/06/04 vinicius>
15 15
16Vinicius's last change version -- this file may have been edited as part of 16Vinicius's last change version -- this file may have been edited as part of
17Emacs without changes to the version number. When reporting bugs, 17Emacs without changes to the version number. When reporting bugs,
@@ -2398,6 +2398,7 @@ StandardEncoding 46 82 getinterval aload pop
2398(defvar ps-output-head nil) 2398(defvar ps-output-head nil)
2399(defvar ps-output-tail nil) 2399(defvar ps-output-tail nil)
2400 2400
2401(defvar ps-page-postscript 0)
2401(defvar ps-page-count 0) 2402(defvar ps-page-count 0)
2402(defvar ps-showline-count 1) 2403(defvar ps-showline-count 1)
2403 2404
@@ -3203,7 +3204,7 @@ page-height == bm + print-height + tm - ho - hh
3203 3204
3204(defun ps-begin-file () 3205(defun ps-begin-file ()
3205 (ps-get-page-dimensions) 3206 (ps-get-page-dimensions)
3206 (setq ps-showline-count (if ps-printing-region (car ps-printing-region) 1) 3207 (setq ps-page-postscript 0
3207 ps-background-text-count 0 3208 ps-background-text-count 0
3208 ps-background-image-count 0 3209 ps-background-image-count 0
3209 ps-background-pages nil 3210 ps-background-pages nil
@@ -3263,14 +3264,7 @@ page-height == bm + print-height + tm - ho - hh
3263 3264
3264 (ps-output-boolean "Zebra" ps-zebra-stripes) 3265 (ps-output-boolean "Zebra" ps-zebra-stripes)
3265 (ps-output-boolean "PrintLineNumber" ps-line-number) 3266 (ps-output-boolean "PrintLineNumber" ps-line-number)
3266 (ps-output (format "/ZebraHeight %d def\n" ps-zebra-stripe-height) 3267 (ps-output (format "/ZebraHeight %d def\n" ps-zebra-stripe-height))
3267 (format "/Lines %d def\n"
3268 (if ps-printing-region
3269 (cdr ps-printing-region)
3270 (ps-count-lines (point-min) (point-max))))
3271 "/PageCount 0 def\n") ; set total page number
3272 ; when printing has finished
3273 ; (see `ps-generate')
3274 3268
3275 (ps-background-text) 3269 (ps-background-text)
3276 (ps-background-image) 3270 (ps-background-image)
@@ -3329,7 +3323,13 @@ page-height == bm + print-height + tm - ho - hh
3329 (and (buffer-modified-p) " (unsaved)"))))) 3323 (and (buffer-modified-p) " (unsaved)")))))
3330 3324
3331(defun ps-begin-job () 3325(defun ps-begin-job ()
3332 (setq ps-page-count 0 3326 (save-excursion
3327 (set-buffer ps-spool-buffer)
3328 (goto-char (point-max))
3329 (and (re-search-backward "^%%Trailer$" nil t)
3330 (delete-region (match-beginning 0) (point-max))))
3331 (setq ps-showline-count (if ps-printing-region (car ps-printing-region) 1)
3332 ps-page-count 0
3333 ps-control-or-escape-regexp 3333 ps-control-or-escape-regexp
3334 (cond ((eq ps-print-control-characters '8-bit) 3334 (cond ((eq ps-print-control-characters '8-bit)
3335 "[\000-\037\177-\377]") 3335 "[\000-\037\177-\377]")
@@ -3344,7 +3344,7 @@ page-height == bm + print-height + tm - ho - hh
3344 3344
3345(defun ps-end-file () 3345(defun ps-end-file ()
3346 (ps-output "\n%%Trailer\n%%Pages: " 3346 (ps-output "\n%%Trailer\n%%Pages: "
3347 (format "%d" (ps-page-number)) 3347 (format "%d" ps-page-postscript)
3348 "\n\nEndDoc\n\n%%EOF\n")) 3348 "\n\nEndDoc\n\n%%EOF\n"))
3349 3349
3350 3350
@@ -3354,17 +3354,21 @@ page-height == bm + print-height + tm - ho - hh
3354 (ps-begin-page)) 3354 (ps-begin-page))
3355 3355
3356(defun ps-header-page () 3356(defun ps-header-page ()
3357 ;; set total line and page number when printing has finished
3358 ;; (see `ps-generate')
3357 (if (prog1 3359 (if (prog1
3358 (zerop (mod ps-page-count ps-number-of-columns)) 3360 (zerop (mod ps-page-count ps-number-of-columns))
3359 (setq ps-page-count (1+ ps-page-count))) 3361 (setq ps-page-count (1+ ps-page-count)))
3360 ;; Print only when a new real page begins. 3362 ;; Print only when a new real page begins.
3361 (let ((page-number (ps-page-number))) 3363 (progn
3362 (ps-output (format "\n%%%%Page: %d %d\n" page-number page-number)) 3364 (setq ps-page-postscript (1+ ps-page-postscript))
3363 (ps-output "BeginDSCPage\n") 3365 (ps-output (format "\n%%%%Page: %d %d\n"
3364 (ps-background page-number) 3366 ps-page-postscript ps-page-postscript))
3367 (ps-output "/Lines 0 def\n/PageCount 0 def\nBeginDSCPage\n")
3368 (ps-background ps-page-postscript)
3365 (run-hooks 'ps-print-begin-page-hook)) 3369 (run-hooks 'ps-print-begin-page-hook))
3366 ;; Print when any other page begins. 3370 ;; Print when any other page begins.
3367 (ps-output "BeginDSCPage\n") 3371 (ps-output "/Lines 0 def\n/PageCount 0 def\nBeginDSCPage\n")
3368 (run-hooks 'ps-print-begin-column-hook))) 3372 (run-hooks 'ps-print-begin-column-hook)))
3369 3373
3370(defun ps-begin-page () 3374(defun ps-begin-page ()
@@ -3907,7 +3911,7 @@ If FACE is not a valid face name, it is used default face."
3907 (unwind-protect 3911 (unwind-protect
3908 (progn 3912 (progn
3909 (set-buffer ps-spool-buffer) 3913 (set-buffer ps-spool-buffer)
3910 3914 (set-buffer-multibyte nil)
3911 ;; Get a marker and make it point to the current end of the 3915 ;; Get a marker and make it point to the current end of the
3912 ;; buffer, If an error occurs, we'll delete everything from 3916 ;; buffer, If an error occurs, we'll delete everything from
3913 ;; the end of this marker onwards. 3917 ;; the end of this marker onwards.
@@ -3928,17 +3932,22 @@ If FACE is not a valid face name, it is used default face."
3928 3932
3929 (and ps-spool-duplex (= (mod ps-page-count 2) 1) 3933 (and ps-spool-duplex (= (mod ps-page-count 2) 1)
3930 (ps-dummy-page)) 3934 (ps-dummy-page))
3935 (ps-end-file)
3931 (ps-flush-output) 3936 (ps-flush-output)
3932 3937
3933 ;; Back to the PS output buffer to set the page count 3938 ;; Back to the PS output buffer to set the page count
3934 (set-buffer ps-spool-buffer) 3939 (let ((total-lines (if ps-printing-region
3935 (goto-char (point-min)) 3940 (cdr ps-printing-region)
3936 (and (re-search-forward "^/PageCount 0 def$" nil t) 3941 (ps-count-lines (point-min) (point-max))))
3937 (replace-match (format "/PageCount %d def" 3942 (total-pages (if ps-print-only-one-header
3938 (if ps-print-only-one-header 3943 (ps-page-number)
3939 (ps-page-number) 3944 ps-page-count)))
3940 ps-page-count)) 3945 (set-buffer ps-spool-buffer)
3941 t)) 3946 (goto-char (point-min))
3947 (while (re-search-forward "^/Lines 0 def\n/PageCount 0 def$"
3948 nil t)
3949 (replace-match (format "/Lines %d def\n/PageCount %d def"
3950 total-lines total-pages) t)))
3942 3951
3943 ;; Setting this variable tells the unwind form that the 3952 ;; Setting this variable tells the unwind form that the
3944 ;; the PostScript was generated without error. 3953 ;; the PostScript was generated without error.
@@ -3960,8 +3969,6 @@ If FACE is not a valid face name, it is used default face."
3960 (if (or (not (boundp 'ps-spool-buffer)) 3969 (if (or (not (boundp 'ps-spool-buffer))
3961 (not (symbol-value 'ps-spool-buffer))) 3970 (not (symbol-value 'ps-spool-buffer)))
3962 (message "No spooled PostScript to print") 3971 (message "No spooled PostScript to print")
3963 (ps-end-file)
3964 (ps-flush-output)
3965 (if filename 3972 (if filename
3966 (save-excursion 3973 (save-excursion
3967 (and ps-razzle-dazzle (message "Saving...")) 3974 (and ps-razzle-dazzle (message "Saving..."))