Private Pins insertion or sending the job to a user or content based Mailbox can be
- entered by the user while starting the job
- read from the Active Directory
- read out of an ELP database, like explained here on this page
- or analysed by using the data stream content, like for example a tour number, that all jobs are sorted by the tour. Find here an easy small example for user based PIN insertion
Below there is an extensive example for the database version. And please note, that selecting a printers mailbox is pretty the same mechanism.
Q) A client wants to use ELP, that each print job is 100% printed as a secured private job to the printers hard disk. The PIN code for each user has to be retrieved from a database.
1. Create a .dbf database for example with DBF Commander and with minimum 2 fields: USERNAME and PIN_FIELD.
The free version of DBF Commander can be downloaded from it´s product website here. Use DBF Commander only when you are sure that all DB fields won´t contain any Unicode information.
Both fields are for type string, the PIN_FIELD is length 4 and the USERNAME what ever you need. The file could be located in the workpath folder named PIN.DBF
Fill your database or export it form any other database.
Notes:
-
ELP support only the .dbf database format, as this is build in, and therefore can also be used running embedded in the printer firmware as I-ELP.
-
The examples below base upon HP Settings for private pin printing. The PJL commands may change for other vendors.
2. Setup the following keys and rules in the convert.ini command file.
2.1 This version is for every job has to be secured
The first example assumes, that the job starts with PJL commands
[GLOBAL]
; As every job is subject to be private, we put the database function into the section global
; Preset the used variable for the pin number to NotFound</p
Variable=#UserPinVariable#:NotFound
>
; Open the database
DB_Open=#ELP_FORMS_PATH#PINcode.DBF
; If the database is accessible then search for the record with the user logon name
; The first USERNAME is the name of the database field. ELP will search all records
; for the content of the general available ELP variable #USERNAME#. This term has to
; be in double quotes, because ELP will replace the variable before the database
; search starts. So actually the database search term will be: USERNAME="THOMASXP"
DB_Locate=USERNAME="#USERNAME#"
; If the record is found, then read the content from the field PIN_FIELD and store
; the term into the searchable ELP variable #UserPinVariable#
DB_Variable=PIN_FIELD:#UserPinVariable#
[Insert the pin into the data stream]
; well the best place to put that pin information in to the data stream is right
; before the enter language PJL command
Search_Binary=@PJL ENTER LANGUAGE
; if found, enter the PJL commands for storing the data stream as a private job on the Hard disk
; NOTE the next lines have to be all in one line.
Insert_Binary=@PJL SET HOLD=ON\x0A@PJL SET HOLDTYPE=PRIVATE\x0A@PJL SET HOLDKEY="#UserPinVariable#"\x0A@PJL SET USERNAME="#USERNAME#"\x0A@PJL SET JOBNAME="ELP_JOB"\x0A
[If no PIN was found, do not print the job]
; Primary trigger is always true as a one is in all jobs
Trigger_Binary=1
; If the variable is still the initialization value, then the User was not found in the database and so do not print the job
Trigger_Variable=UserPinVariable:NotFound
NoPrinting=ON
Another solution is described in the ELP's MyPrintArchive function, No printer hard disk is needed!
If you are not sure if all jobs start with an UEL and PJL section, then add those 2 rules:
[If UEL with PJL was NOT found in data stream]
; do nothing if that PCL command is found, otherwise
Trigger_Binary=@PJL ENTER LANGUAGE
; activate the next rule
ElseTriggerActivateSection=No PJL section is found
[No PJL section is found]
; This section is automatically executed if the rule above is NOT true
; Dummy command, that next Command is executed, you may add forms and any other ELP_commands
ELP_Command=K1;
ELP_Init_Job=\x1B%-12345X@PJL SET HOLD=ON\x0A@PJL SET HOLDTYPE=PRIVATE\x0A@PJL SET HOLDKEY="#UserPinVariable#"\x0A@PJL SET USERNAME="#USERNAME#"\x0A@PJL SET JOBNAME="ELP_JOB"\x0A@PJL ENTER LANGUAGE=PCL\x0A
ELP_Exit_Job=\x1B%-12345X@
2.2 Read a tour number out of the data stream and use this as a pin number
[GLOBAL]
Variable=#MyTourPin#:NotFound
[Search for tour number in Datastream]
Search_Windows=Tour:
; And store it into the ELP variable
StoreNextWordToVariable=#MyTourPin#
[If no Tour was found, exit the rule interpreter]
; Primary trigger is always true as a one is in all jobs
Trigger_Binary=1
; If the variable is still the initialization value, then the job was not a delivery note
; then simply continue printing without changes
Trigger_Variable=UserPinVariable:NotFound
Exit=ON
[Insert the pin into the data stream]
; This triggered rule is evaluated after the rue above, and becomes always TRUE
Trigger_Binary=1
; Dummy command, that next Command is executed, you may add forms and any other ELP_commands
ELP_Command=K1;
; Erase any PJL commands from the stream
EraseAllPJL=ON
; Inserts the initializations for the PIN codes.
ELP_Init_Job=\x1B%-12345X@PJL SET HOLD=ON\x0A@PJL SET HOLDTYPE=PRIVATE\x0A@PJL SET HOLDKEY="#MyTourPin#"\x0A@PJL SET USERNAME="Tour_#MyTourPin#"\x0A@PJL SET JOBNAME="ELP_JOB"\x0A@PJL ENTER LANGUAGE=PCL\x0A
ELP_Exit_Job=\x1B%-12345X@
2.3 The example 2.2 is sometimes used to add the correct user/tour name for Ringdales FollowMetm or SecureJettm. In that cases the PJL commands might look different, Ask the software vendors for help.
In the implementation of the database engine ELP checks in the found record for the following field names. If available the described ELP activates are automatically executed:
Field Name | Description |
EMAIL_ADR | The syntax content of the field is analogue to the key eMailAdress:adress1,adress2,... Any field entry will automatically enable the eMail function. So it is a good idea to set the subject and the body text earlier, maybe even in the section global.New addresses are checked if they are already used. Maximum up to 254 Bytes are available.If there wasn't yet an e-Mail address defined, then ELP will enable the e-Mail sending function and read the additional e-Mail keys of the actual section. Like eMailArguments, Body-Text etc |
EMAIL_CCAD | Same as eMail_adr but for names used in cc carbon copy field. |
COPY_FACT | Replaces or adds a copy factor in the actual ELP_Command command K (default), Q or R, if the provided database entry is1 and up. |
NOPRINTING | The is a field of type bool. It could be set to TRUE -> No Printing is performed, or FALSE, then the job is printed.Note: When a queue never prints, then set the queue port to the local port NUL. So there must be then no printer assigned and powered on. |
INARCHIVEDIR | Turn the archive function for incoming data streams on. The filed does contain the complete storage directory. Defining file names is possible. |
OUTARCHIVEDIR | Same like InArchive field but for outgoing data streams. If this field does contain a value, the key OUTARCHIVESPLITFILES is also verified, but must be located in the ini-file section. |
CALL | Calls an external program right before the ELP is finished |
CALLNOPRINT | Calls an external program right before the ELP is finished, and no data will be printed. |
OUTPORT | Distributes the out going data stream to a specified port name like \\MyServername\PrinterShareName. In addition this key can be used to split direct outgoing files to that port. Set key description for further details. |
INPORT | Distributes the incoming data stream to a specified port name like \\MyServername\PrinterShareName |
The content of up to 20 fields can be loaded as variables. The ini-file key for this action is DB_VARIABLE.
Related articles: Rules theory, Rule assistant, Add key to rule, Variables, Search rules, Example with username, ELP_Command