MCPcopy
hub / github.com/RUB-NDS/PRET / do_hold

Method do_hold

postscript.py:793–857  ·  view source on GitHub ↗

Enable job retention.

(self, arg)

Source from the content-addressed store, hash-verified

791
792 # ------------------------[ hold ]------------------------------------
793 def do_hold(self, arg):
794 "Enable job retention."
795 output().psonly()
796 str_send = 'currentpagedevice (CollateDetails) get (Hold) get 1 ne\n'\
797 '{/retention 1 def}{/retention 0 def} ifelse\n'\
798 '<< /Collate true /CollateDetails\n'\
799 '<< /Hold retention /Type 8 >> >> setpagedevice\n'\
800 '(Job retention ) print\n'\
801 'currentpagedevice (CollateDetails) get (Hold) get 1 ne\n'\
802 '{(disabled.) print}{(enabled.) print} ifelse'
803 output().info(self.globalcmd(str_send))
804 self.chitchat(
805 "On most devices, jobs can only be reprinted by a local attacker via the")
806 self.chitchat(
807 "printer's control panel. Stored jobs are sometimes accessible by PS/PJL")
808 self.chitchat(
809 "file system access or via the embedded web server. If your printer does")
810 self.chitchat(
811 "not support holding jobs try the more generic 'capture' command instead")
812 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
813 ''&#x27;
814 **************************** HP/KYOCERA ****************************
815 << /Collate true /CollateDetails << /Type 8 /Hold 1 >> >> setpagedevice % quick copy (HP)
816 << /Collate true /CollateDetails << /Type 8 /Hold 2 >> >> setpagedevice % stored job (HP)
817 << /Collate true /CollateDetails << /Mode 0 /Type 8 /Hold 1 >> >> setpagedevice % quick copy (Kyocera)
818 << /Collate true /CollateDetails << /Mode 0 /Type 8 /Hold 2 >> >> setpagedevice % stored job (Kyocera)
819 << /Collate true /CollateDetails << /Mode 0 >> >> setpagedevice % permanent job storage (Kyocera)
820 << /CollateDetails << /Hold 0 /Type 8 >> >> setpagedevice % disable job retention (HP)
821
822 **************************** CANON *********************************
823 << /CNJobExecMode store >> setpagedevice
824 << /CNJobExecMode hold >> setpagedevice
825
826 **************************** BROTHER *******************************
827 << /BRHold 2 /BRHoldType 0 >> setpagedevice
828
829 **************************** XEROX #1 ******************************
830 userdict /XJXsetraster known { 1 XJXsetraster } if
831
832 **************************** XEROX #2 ******************************
833 userdict begin /xerox$holdjob 1 def end
834 /EngExe /ProcSet resourcestatus
835 {pop pop /EngExe /ProcSet findresource /HoldJob known
836 {false /EngExe /ProcSet findresource /HoldJob get exec} if} if
837
838 **************************** TOSHIBA *******************************
839 /dscInfo where {
840 pop
841 dscInfo /For known {
842 <</TSBPrivate 100 string dup 0 (DSSC PRINT USERLOGIN=)
843 putinterval dup 21 dscInfo /For get putinterval
844 >> setpagedevice
845 } if
846 dscInfo /Title known {
847 <</TSBPrivate 100 string dup 0 (DSSC JOB NAME=)
848 putinterval dup 14 dscInfo /Title get putinterval
849 >> setpagedevice
850 } if

Callers

nothing calls this directly

Calls 5

globalcmdMethod · 0.95
outputClass · 0.90
psonlyMethod · 0.80
infoMethod · 0.80
chitchatMethod · 0.45

Tested by

no test coverage detected