|
|
1.1 root 1: %
2: % Center pages, based on pageheight and pagewidth, and redefine showpage
3: % to put cropmarks at each corner. Device dependent code to expand the
4: % paper size goes in procedure expandpagesize. Currently only supports
5: % a Linotronic 200P typesetter using 12 inch wide paper. You'll have to
6: % add code to expandpagesize to support different typesetters or even a
7: % 200P that's running differently.
8: %
9:
10: /CropmarkDict 40 dict dup begin
11:
12: /expandpage true def
13: /magnification 1 def
14: /pageheight 11.0 def
15: /pagewidth 8.5 def
16: /scaletofit false def
17: /scaling 1 def
18:
19: /marklength .3 def % inches
20: /markstart .125 def % inches
21: /markend .04 def % inches
22: /marklinewidth .25 def % points
23:
24: /inch {72 mul} def
25: /min {2 copy gt {exch} if pop} def
26: /max {2 copy lt {exch} if pop} def
27:
28: /setup {
29: /markspace markstart marklength add markend add inch marklinewidth add def
30: /totalheight pageheight inch markspace 2 mul add def
31: /totalwidth pagewidth inch markspace 2 mul add def
32:
33: pagedimensions
34: checkpagesize
35: /scaling getscaling def
36: xcenter ycenter translate
37: scaling scaling scale
38: pagewidth inch 2 div neg pageheight inch 2 div neg translate
39: clippage
40: } def
41:
42: /pagedimensions {
43: clippath pathbbox newpath
44: 4 -1 roll exch 4 1 roll 4 copy
45: sub /width exch def
46: sub /height exch def
47: add 2 div /xcenter exch def
48: add 2 div /ycenter exch def
49: } def
50:
51: /checkpagesize {
52: height totalheight lt width totalwidth lt or expandpage and {
53: expandpagesize
54: pagedimensions
55: } if
56: } def
57:
58: /expandpagesize { % device dependent code
59: /Product statusdict begin /product where {pop product}{()} ifelse end def
60:
61: Product (Linotype) eq { % Linotronic 200P and other models?
62: statusdict /setpageparams known {
63: /maxwidth 12.0 inch def % 12 inch wide paper?
64: totalheight maxwidth le {
65: totalheight
66: totalwidth
67: maxwidth totalheight sub 2 div
68: 0
69: }{
70: totalwidth maxwidth min
71: totalheight
72: maxwidth totalwidth maxwidth min sub 2 div
73: 1
74: } ifelse
75: statusdict /setpageparams get exec
76: } if
77: } if
78: } def
79:
80: /getscaling {
81: scaletofit
82: {height totalheight div width totalwidth div min 1 min}
83: {1}
84: ifelse
85: } def
86:
87: /clippage {
88: newpath
89: 0 0 moveto
90: pagewidth inch 0 rlineto
91: 0 pageheight inch rlineto
92: pagewidth neg inch 0 rlineto
93: closepath clip
94: newpath
95: } def
96:
97: /cropmark {
98: gsave
99: translate
100: rotate
101: marklinewidth dup translate
102: 0 0 transform round exch round exch itransform translate
103: markstart inch 0 moveto marklength inch 0 rlineto stroke
104: 0 markstart inch moveto 0 marklength inch rlineto stroke
105: grestore
106: } bind def
107:
108: /@PreviousShowpage /showpage load def
109:
110: end def
111:
112: %
113: % Cropmarks - in the default coordinate system.
114: %
115:
116: /showpage {
117: gsave
118: CropmarkDict begin
119: initgraphics
120: marklinewidth setlinewidth
121: xcenter ycenter translate
122: scaling scaling scale
123: 0 pagewidth inch 2 div pageheight inch 2 div cropmark
124: 90 pagewidth inch neg 2 div pageheight inch 2 div cropmark
125: 180 pagewidth inch neg 2 div pageheight inch 2 div neg cropmark
126: 270 pagewidth inch 2 div pageheight inch 2 div neg cropmark
127: @PreviousShowpage
128: end
129: grestore
130: } bind def
131:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.