Enable job retention.
(self, arg)
| 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 | ''' |
| 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 |