*PPD-Adobe: "4.1"
*% Adobe PostScript(R) Printer Description File
*% For IBM LaserPrinter 4039 plus
*% For use with Adobe's and similar printer drivers
*% Produced by Lexmark International, Inc.
*%
*% Copyright (c) 1993-1998 Lexmark International Inc. All Rights Reserved.
*% Permission is granted for redistribution of this file as
*% long as this copyright notice is intact and the content
*% of the file is not altered in any way from its original form.
*%
*%
*FormatVersion: "4.1"
*FileVersion: "1.1"
*LanguageVersion: English
*PCFileName: "IBM4039P.PPD"
*Product: "(IBM LaserPrinter 4039 plus)"
*PSVersion: "(2014)"
*ModelName: "IBM LaserPrinter 4039 plus"
*ShortNickName: "IBM 4039 plus PS"
*NickName: "IBM 4039 plus PS"
*LanguageLevel: "2"
*Protocols: PJL
*FreeVM: "376000"
*VMOption 2Meg: "376000"
*VMOption 4Meg: "728000"
*VMOption 6Meg: "828000"
*VMOption 8Meg: "1032000"
*VMOption 10Meg: "1032000"
*VMOption 12Meg: "1237000"
*VMOption 16Meg: "1647000"
*ColorDevice: False
*DefaultColorSpace: Gray
*VariablePaperSize: True
*Throughput: "8"
*Password: "0"
*ExitServer: "
count 0 eq % is the password on the stack?
{ true }
{ dup % potential password
statusdict /checkpassword get exec not
} ifelse
{ % if no password or not valid
(WARNING : Cannot perform the exitserver command.) =
(Password supplied is not valid.) =
(Please contact the author of this software.) = flush
quit
} if
serverdict /exitserver get exec
"
*End
*Reset: "
count 0 eq % is the password on the stack?
{ true }
{ dup % potential password
statusdict /checkpassword get exec not
} ifelse
{ % if no password or not valid
(WARNING : Cannot reset printer.) =
(Password supplied is not valid.) =
(Please contact the author of this software.) = flush
quit
} if
serverdict /exitserver get exec
systemdict /quit get exec
(WARNING : Printer Reset Failed.) = flush
"
*End
*% === Job Control Language ==
*JCLBegin: "<1B>%-12345X@PJL JOB<0A>"
*JCLToPSInterpreter: "@PJL ENTER LANGUAGE = Postscript <0A>"
*JCLEnd: "<1B>%-12345X@PJL EOJ <0A><1B>%-12345X"
*% === Resolution ============
*OpenUI *Resolution: PickOne
*DefaultResolution: 300dpi
*OrderDependency: 10 AnySetup *Resolution
*Resolution 300dpi: "1 dict dup /HWResolution [300 300] put setpagedevice"
*Resolution 600dpi: "1 dict dup /HWResolution [600 600] put setpagedevice"
*?Resolution: "
save
currentpagedevice /HWResolution get 0 get
( ) cvs print (dpi) = flush
restore
"
*End
*CloseUI: *Resolution
*OpenUI *Smoothing/Smoothing: PickOne
*DefaultSmoothing: None
*OrderDependency: 40 AnySetup *Smoothing
*Smoothing None/Printer Setting: ""
*Smoothing True/On: "
1 dict dup /PostRenderingEnhanceDetails 1 dict dup /REValue 2 put put setpagedevice"
*End
*Smoothing False/Off: "
1 dict dup /PostRenderingEnhanceDetails 1 dict dup /REValue 0 put put setpagedevice"
*End
*?Smoothing: "
save
currentpagedevice /PostRenderingEnhanceDetails get /REValue get
dup 3 gt{pop 4}if [(False)(True)(True)(True)(Unknown)] exch get = flush
restore
"
*End
*CloseUI: *Smoothing
*% === Halftone Information ===============
*ScreenFreq: "60.0"
*ScreenAngle: "45.0"
*DefaultScreenProc: Dot
*ScreenProc Dot: "
{abs exch abs 2 copy add 1 gt {1 sub dup mul exch 1 sub dup mul add 1
sub }{dup mul exch dup mul add 1 exch sub }ifelse }
"
*End
*ScreenProc Line: "{ pop }"
*ScreenProc Ellipse: "{ dup 5 mul 8 div mul exch dup mul exch add sqrt 1 exch sub }"
*DefaultTransfer: Factory
*Transfer Factory: "
{ statusdict begin doenhancedhalftone resolution end 600 eq and
{ dup 0.28 lt
{ 0.6 exp 1.2 mul }
{ dup mul .478426 mul .521574 add }
ifelse
}
{ 0.85 exp }
ifelse }"
*End
*Transfer Factory.Inverse: "
{ statusdict begin doenhancedhalftone resolution end 600 eq and
{ dup 0.28 lt
{ 0.6 exp 1.2 mul }
{ dup mul .478426 mul .521574 add }
ifelse
}
{ 0.85 exp }
ifelse
1 exch sub }"
*End
*% === Paper Handling ===================
*LandscapeOrientation: Plus90
*% These entries will set up the frame buffer.
*OpenUI *PageSize: PickOne
*OrderDependency: 30 AnySetup *PageSize
*DefaultPageSize: Letter
*PageSize Letter/Letter: "
1 dict dup /Policies 1 dict dup /PageSize 2 put put setpagedevice
2 dict dup /PageSize [612 792] put dup /ImagingBBox null put setpagedevice"
*End
*PageSize Legal/Legal: "
1 dict dup /Policies 1 dict dup /PageSize 2 put put setpagedevice
2 dict dup /PageSize [612 1008] put dup /ImagingBBox null put setpagedevice"
*End
*PageSize Executive/Executive: "
1 dict dup /Policies 1 dict dup /PageSize 2 put put setpagedevice
2 dict dup /PageSize [522 756] put dup /ImagingBBox null put setpagedevice"
*End
*PageSize A4/A4: "
1 dict dup /Policies 1 dict dup /PageSize 2 put put setpagedevice
2 dict dup /PageSize [595 842] put dup /ImagingBBox null put setpagedevice"
*End
*PageSize A5/A5: "
1 dict dup /Policies 1 dict dup /PageSize 2 put put setpagedevice
2 dict dup /PageSize [419 595] put dup /ImagingBBox null put setpagedevice"
*End
*PageSize B5/B5: "
1 dict dup /Policies 1 dict dup /PageSize 2 put put setpagedevice
2 dict dup /PageSize [516 729] put dup /ImagingBBox null put setpagedevice"
*End
*PageSize Monarch/Monarch Envelope: "
1 dict dup /Policies 1 dict dup /PageSize 2 put put setpagedevice
2 dict dup /PageSize [279 540] put dup /ImagingBBox null put setpagedevice"
*End
*PageSize C9/C9 Envelope: "
1 dict dup /Policies 1 dict dup /PageSize 2 put put setpagedevice
2 dict dup /PageSize [279 639] put dup /ImagingBBox null put setpagedevice"
*End
*PageSize Comm10/C10 Envelope: "
1 dict dup /Policies 1 dict dup /PageSize 2 put put setpagedevice
2 dict dup /PageSize [297 684] put dup /ImagingBBox null put setpagedevice"
*End
*PageSize DL/DL Envelope: "
1 dict dup /Policies 1 dict dup /PageSize 2 put put setpagedevice
2 dict dup /PageSize [312 624] put dup /ImagingBBox null put setpagedevice"
*End
*PageSize C5/C5 Envelope: "
1 dict dup /Policies 1 dict dup /PageSize 2 put put setpagedevice
2 dict dup /PageSize [459 649] put dup /ImagingBBox null put setpagedevice"
*End
*PageSize ISOB5/B5 Envelope: "
1 dict dup /Policies 1 dict dup /PageSize 2 put put setpagedevice
2 dict dup /PageSize [499 709] put dup /ImagingBBox null put setpagedevice"
*End
*PageSize Other/Other Envelope: "
1 dict dup /Policies 1 dict dup /PageSize 2 put put setpagedevice
2 dict dup /PageSize [612 996] put dup /ImagingBBox null put setpagedevice"
*End
*?PageSize: "
save
13 dict
dup /letter (Letter) put
dup /legal (Legal) put
dup /executivepage (Executive) put
dup /a4 (A4) put
dup /a5 (A5) put
dup /b5 (B5) put
dup /3.875x7.5envelope (Monarch) put
dup /3.875x8.875envelope (C9) put
dup /4.125x9.5envelope (Comm10) put
dup /110x220envelope (DL) put
dup /162x229envelope (C5) put
dup /176x250envelope (Envelope.499.709) put
dup /otherenvelope (Envelope.612.996) put
statusdict /papersize get exec
3 1 roll {get} stopped {(Unknown)}if
exch not { print (.Transverse) }if
= flush
restore
"
*End
*CloseUI: *PageSize
*% These entries will set up the frame buffer.
*% Usually used with input slots other than AutoSelect.
*OpenUI *PageRegion: PickOne
*OrderDependency: 40 AnySetup *PageRegion
*DefaultPageRegion: Letter
*PageRegion Letter/Letter: "
2 dict dup /PageSize [612 792] put dup /ImagingBBox null put setpagedevice"
*End
*PageRegion Legal/Legal: "
2 dict dup /PageSize [612 1008] put dup /ImagingBBox null put setpagedevice"
*End
*PageRegion Executive/Executive: "
2 dict dup /PageSize [522 756] put dup /ImagingBBox null put setpagedevice"
*End
*PageRegion A4/A4: "
2 dict dup /PageSize [595 842] put dup /ImagingBBox null put setpagedevice"
*End
*PageRegion A5/A5: "
2 dict dup /PageSize [419 595] put dup /ImagingBBox null put setpagedevice"
*End
*PageRegion B5/B5: "
2 dict dup /PageSize [516 729] put dup /ImagingBBox null put setpagedevice"
*End
*PageRegion Monarch/Monarch Envelope: "
2 dict dup /PageSize [279 540] put dup /ImagingBBox null put setpagedevice"
*End
*PageRegion C9/C9 Envelope: "
2 dict dup /PageSize [279 639] put dup /ImagingBBox null put setpagedevice"
*End
*PageRegion Comm10/C10 Envelope: "
2 dict dup /PageSize [297 684] put dup /ImagingBBox null put setpagedevice"
*End
*PageRegion DL/DL Envelope: "
2 dict dup /PageSize [312 624] put dup /ImagingBBox null put setpagedevice"
*End
*PageRegion C5/C5 Envelope: "
2 dict dup /PageSize [459 649] put dup /ImagingBBox null put setpagedevice"
*End
*PageRegion ISOB5/B5 Envelope: "
2 dict dup /PageSize [499 709] put dup /ImagingBBox null put setpagedevice"
*End
*PageRegion Other/Other Envelope: "
2 dict dup /PageSize [612 996] put dup /ImagingBBox null put setpagedevice"
*End
*CloseUI: *PageRegion
*% These provide the physical dimensions of the paper (by keyword)
*DefaultPaperDimension: Letter
*PaperDimension Letter: "612 792"
*PaperDimension Legal: "612 1008"
*PaperDimension Executive: "522 756"
*PaperDimension A4: "595 842"
*PaperDimension A5: "420 595"
*PaperDimension B5: "516 729"
*PaperDimension Monarch: "279 540"
*PaperDimension C9: "279 639"
*PaperDimension Comm10: "297 684"
*PaperDimension DL: "312 624"
*PaperDimension C5: "459 649"
*PaperDimension ISOB5: "499 709"
*PaperDimension Other: "612 1008"
*%*********************
*% Custom Paper Size *
*%*********************
*VariablePaperSize: True % Present for Downward Compatibility
*% This stores the custom page size information as an entry in the userdict so that it can
*% be issued after the input slot Postscript string for tray1 because the driver was issueing
*% it before the set PageSize Ploicy of 7.
*CustomPageSize True: "
pop pop pop
/CustomPageSize 2 dict dup
/PageSize [
7 -2 roll
] put dup /ImagingBBox null put
def
"
*End
*DefaultOutputOrder: Normal
*OutputOrder Normal: ""
*OutputOrder Reverse: ""
*OpenUI *Duplex/Duplex: PickOne
*OrderDependency: 50 AnySetup *Duplex
*DefaultDuplex: None
*Duplex None/Simplex: "1 dict dup /Duplex false put setpagedevice"
*Duplex DuplexNoTumble/Duplex - Long Edge: "
statusdict /duplexer get exec
{ 2 dict dup /Duplex true put dup /Tumble false put setpagedevice }
{ 1 dict dup /Duplex false put setpagedevice }
ifelse
"
*End
*Duplex DuplexTumble/Duplex - Short Edge: "
statusdict /duplexer get exec
{ 2 dict dup /Duplex true put dup /Tumble true put setpagedevice }
{ 1 dict dup /Duplex false put setpagedevice }
ifelse
"
*End
*?Duplex: "
save
currentpagedevice /Duplex get {(True)}{(False)}ifelse = flush
restore
"
*End
*CloseUI: *Duplex
*% === Font Information ==========================================
*DefaultFont: Courier
*Font Courier: Standard "(001.000)" Standard ROM
*Font Courier-Bold: Standard "(001.000)" Standard ROM
*Font Courier-Oblique: Standard "(001.000)" Standard ROM
*Font Courier-BoldOblique: Standard "(001.000)" Standard ROM
*Font Times-Roman: Standard "(001.000)" Standard ROM
*Font Times-Bold: Standard "(001.000)" Standard ROM
*Font Times-Italic: Standard "(001.000)" Standard ROM
*Font Times-BoldItalic: Standard "(001.000)" Standard ROM
*Font Helvetica: Standard "(001.000)" Standard ROM
*Font Helvetica-Bold: Standard "(001.000)" Standard ROM
*Font Helvetica-Oblique: Standard "(001.000)" Standard ROM
*Font Helvetica-BoldOblique: Standard "(001.000)" Standard ROM
*Font Helvetica-Narrow: Standard "(001.000)" Standard ROM
*Font Helvetica-Narrow-Bold: Standard "(001.000)" Standard ROM
*Font Helvetica-Narrow-BoldOblique: Standard "(001.000)" Standard ROM
*Font Helvetica-Narrow-Oblique: Standard "(001.000)" Standard ROM
*Font Symbol: Special "(001.000)" Standard ROM
*Font AvantGarde-Book: Standard "(001.000)" Standard ROM
*Font AvantGarde-BookOblique: Standard "(001.000)" Standard ROM
*Font AvantGarde-Demi: Standard "(001.000)" Standard ROM
*Font AvantGarde-DemiOblique: Standard "(001.000)" Standard ROM
*Font Bookman-Demi: Standard "(001.000)" Standard ROM
*Font Bookman-DemiItalic: Standard "(001.000)" Standard ROM
*Font Bookman-Light: Standard "(001.000)" Standard ROM
*Font Bookman-LightItalic: Standard "(001.000)" Standard ROM
*Font Helvetica-Light: Standard "(001.000)" Standard ROM
*Font Helvetica-LightOblique: Standard "(001.000)" Standard ROM
*Font Helvetica-Black: Standard "(001.000)" Standard ROM
*Font Helvetica-BlackOblique: Standard "(001.000)" Standard ROM
*Font NewCenturySchlbk-Roman: Standard "(001.000)" Standard ROM
*Font NewCenturySchlbk-Bold: Standard "(001.000)" Standard ROM
*Font NewCenturySchlbk-Italic: Standard "(001.000)" Standard ROM
*Font NewCenturySchlbk-BoldItalic: Standard "(001.000)" Standard ROM
*Font Palatino-Roman: Standard "(001.000)" Standard ROM
*Font Palatino-Bold: Standard "(001.000)" Standard ROM
*Font Palatino-Italic: Standard "(001.000)" Standard ROM
*Font Palatino-BoldItalic: Standard "(001.000)" Standard ROM
*Font ZapfChancery-MediumItalic: Standard "(001.000)" Standard ROM
*Font ZapfDingbats: Special "(001.000)" Special ROM
*?FontQuery: "
save
4 dict begin
/sv exch def
/str (fonts/ ) def
/st2 128 string def
{ count 0 gt
{ dup st2 cvs (/) print print (:) print dup FontDirectory exch known
{pop (Yes)}
{ str exch st2 cvs dup length /len exch def
6 exch putinterval str 0 len 6 add getinterval mark exch
{ } st2 filenameforall counttomark 0 gt
{ cleartomark (Yes)}{cleartomark (No)}ifelse
}ifelse = flush
}{ exit } ifelse
} bind loop
(*) = flush
sv
end
restore
"
*End
*?FontList: "
save
2 dict begin
/sv exch def
/str 128 string def
FontDirectory { pop == } bind forall flush
/filenameforall where
{ pop save (fonts/*)
{ dup length 6 sub 6 exch getinterval cvn == } bind
str filenameforall flush restore
} if
(*) = flush
sv
end
restore
"
*End
*% Printer Messages (verbatim from printer):
*Message: "%% exitserver: permanent state may be changed %%"
*Message: "%% Flushing: rest of job (to end-of-file) will be ignored %%"
*Message: "\FontName\ not found, using Courier"
*ColorSepScreenProc ProcessYellow.85lpi.600dpi/85 lpi / 600 dpi: "
{1 add 2 div 3 mul dup floor sub 2 mul 1 sub exch
1 add 2 div 3 mul dup floor sub 2 mul 1 sub exch
abs exch abs 2 copy add 1 gt {1 sub dup mul exch 1 sub dup mul add 1
sub }{dup mul exch dup mul add 1 exch sub }ifelse }
"
*End
*% For 71 lpi / 600 dpi ===============================