%www.ps.bam.de/DG18/10X/MTLG00SP.PS Example File changes PDF-Output by an MTLfunction %The MTLfunction changes the PS-operator w* setgray to produce a linearized output %START and LINEARIZED printer output S1 and S2 if w* setgray is used in file %Realize the following steps: %produce a copy of the folder with the Software Adobe Acrobat Distiller 4.0 (or later) %copy this file MTL200S0.PS into the STARTUP directory of this folder %and call this file MTL200S1.PS %Remark there is already a file called Example.ps; %The result of the copy is an additional file called MTL200S1.PS in the STARTUP directory %produce an Alias of the original and the copy of the Distiller Software on the desktop %the names may be: %Distiller; this software is used to produce the START output: %use the file with the name L18E00NP.PS (N=No output Linearization) to produce a PDF file %DistillerMTLS1; this software is used to produce the LINEARIZED output %use the file with the name L18E00SP.PS (S=STARTUP output linearization) to produce a PDF file %Remark: the two files L18E00NP.PS and L18E00SP.PS are identical; only the file name differs %Test result: %The PDFfile L18E00SP.PS looks much lighter compared to the PDF file L18E00NP.PS %To produce the LINEARIZED output of the file L18E00SP.PS %It is necessary to exchange in the file MTL200S1.PS in the STARTUP directory the data %/MTLoutarrS1 [18.0 38.0 ... 95.4] def by the L* output data of the file L18E00NP.PS; %For the example data of the START output S1 to be exchanged see below %change the default printer name "OP8c plus" by the new printer name %change the default measurement date "M2002-08-01" by the new measurement date %To produce a Table and Plot of the Start and linearized output data %It is necessary to exchange in the file MTL200S1.PS in the STARTUP directory the data %/MTLoutarrS2 [18.0 23.2 ... 95.4] def by the L* output data of the file L18E00SP.PS; %For the example data of of the LINEARIZED output S2 to be exchanged see below %change the default measurement date "M2002-08-01" by the new measurement data %The data MTLoutarrS1 and MTLoutarrS2 are the measurement data CIELAB L* %of the START output S1 and the linearized output S2 %---------------------------Begin PS program-------------- %Early definition of MTLsetgray identical to former setgray /MTLsetgray {setgray} bind def %START output: real absolute CIELAB lightness L* for PDF printer "OP8c plus" /CFilenameS1g %START output of step S1 (www.ps.bam.de/DE18/10L/L18E00N) def %Link file name for data /CDeviceS1g (Device: X=OP8c plus; ) def %Device name /CMeasS1g (Meas.: DE18/10L/L18E00N) def %File name measured in step S1 /CDateS1g (Date: M2002-08-01) def %Date of calculation/measurement /MTLoutarrS1g 32 array def %theoretical absolute square root (Exp. 0.5) L* output S1: %the START output S1g (g=global) is lighter and the LINEARIZED output is then darker %replace the following 32 MTLoutarrS2g output data by the 32 real output data of output S1 /MTLoutarrS1g [18.0 38.0 46.3 52.6 58.0 62.7 67.0 70.9 74.5 78.0 81.2 83.4 87.2 90.1 92.8 95.4 18.0 38.0 46.3 52.6 58.0 62.7 67.0 70.9 74.5 78.0 81.2 83.4 87.2 90.1 92.8 95.4] def %Example output file of e real printer "OP8c plus" %/MTLoutarrS1g [23.07 23.26 23.99 25.93 29.60 34.97 40.59 45.90 % 52.68 60.46 67.71 74.43 80.72 87.41 91.62 94.07 % 23.07 23.26 23.99 25.93 29.60 34.97 40.59 45.90 % 52.68 60.46 67.71 74.43 80.72 87.41 91.62 94.07] def %SECOND output: real absolute CIELAB lightness L* for PDF printer "OP8c plus" /CFilenameS2g %LINEARIZED output of step S2 (www.ps.bam.de/DE18/10L/L18E00N) def %Link file name for data /CDeviceS2g CDeviceS1g def %Device name identical to CDeviceS1 /CMeasS2g (Meas.: DE18/10L/L18E00S) def %File name measured in step S2 /CDateS2g (Date: M2002-08-01) def %Date of calculation/measurement /MTLoutarrS2g 32 array def %theoretical absolute linear L* output S2 %the START output S1 is lighter and the LINEARIZED output S2 is equally spaced in CIWLAB L* %replace the following 32 MTLoutarrS2g output data by the 32 real output data of output S2 /MTLoutarrS2g [18.0 23.2 28.3 33.5 38.6 43.8 49.0 54.1 59.3 64.4 69.6 74.8 79.9 85.1 90.2 95.4 18.0 23.2 28.3 33.5 38.6 43.8 49.0 54.1 59.3 64.4 69.6 74.8 79.9 85.1 90.2 95.4] def %Example output file of e real printer "OP8c plus" %Remark: the L* limits 22.17 and 94.17 are slightly different compared to S1 %/MTLoutarrS2g [22.17 26.97 31.77 36.57 41.37 46.17 50.97 55.77 % 60.57 65.37 70.17 74.97 79.77 84.57 89.37 94.17 % 22.17 26.97 31.77 36.57 41.37 46.17 50.97 55.77 % 60.57 65.37 70.17 74.97 79.77 84.57 89.37 94.17] def] def /MTLinparrg 16 array def %linear standard relative input data /MTLinparrg [0.000 0.067 0.133 0.200 0.267 0.333 0.400 0.467 0.533 0.600 0.667 0.733 0.800 0.867 0.933 1.000] def %the MTL code converts the absolute CIELAB lightness L* data % to the relative CIELAB whiteness w* data % w* = (L* - L*n) / ( L*w - L*n) /MTLL*NS MTLoutarrS1g 0 get 0.001 add def /MTLL*WS MTLoutarrS1g 15 get 0.001 sub def %MTLtransferf converts the absolute CIELAB lightness L* values % to the relative CIELAB whiteness w* values % w* = (L* - L*n) / ( L*w - L*n) /MTLtransferf {MTLL*NS sub MTLL*WS MTLL*NS sub div} bind def /MTLioF 0 def %Start value to define first transfer /MTLoutarn 16 array def %relative CIELAB whiteness w* values for absolute input data /MTLioFunct {%beg MTLioFunct, expects "MTLcolor" as input MTLioF 0 eq {0 1 15 {/MTLi exch def MTLoutarn MTLi MTLoutarrS1g MTLi get MTLtransferf put } for /MTLioF 1 def } if %calculation only once % search the MTLoutarr using a for loop 1 1 15 {/MTLi exch def /MTLprevindex MTLi 1 sub def MTLcolor MTLoutarn MTLi get lt MTLcolor MTLoutarn MTLprevindex get ge and { /MTLomaxval MTLoutarn MTLi get def /MTLimaxval MTLinparrg MTLi get def /MTLominval MTLoutarn MTLprevindex get def /MTLiminval MTLinparrg MTLprevindex get def exit } if } for % Use a linear interpolation /MTLmodcolor MTLcolor MTLominval sub MTLomaxval MTLominval sub div MTLimaxval MTLiminval sub mul MTLiminval add def } bind def %end MTLioFunction /MTLtransp {/MTLcolor exch def %MTLtransp, new setgray by a function MTLioFunct MTLmodcolor } bind def %end MTLtransp, new setgray by a function /setgray {MTLtransp MTLsetgray} def %end www.ps.bam.de/DG18/10X/MTLG00SP.PS %%Trailer