Private Pins insertion or sending the job to a user or content based Mailbox can be

  • entered by the userwhile 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 forms directory 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

Variable=#UserPinVariable#:NotFound

; Preset the used variable for the pin number to NotFound

DB_Open=#ELP_FORMS_PATH#PINcode.DBF

; Open the database

DB_Locate=USERNAME="#USERNAME#"

; 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_Variable=PIN_FIELD:#UserPinVariable#

; If the record is found, then read the content from the field PIN_FIELD and store

; the term into the searchable ELP variable #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]

Trigger_Binary=1

; Primary trigger is always true as a one is in all jobs

Trigger_Variable=UserPinVariable:NotFound

; If the variable is still the initialization value, then the User was not found

; in the database and so do not print the job

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]

Trigger_Binary=@PJL ENTER LANGUAGE

; do nothing if that PCL command is found, otherwise

ElseTriggerActivateSection=No PJL section is found

; activate the next rule

[No PJL section is found]

; This section is automatically executed if the rule above is NOT true

ELP_Command=K1;

; Dummy command, that next Command is executed, you may add forms and any other ELP_commands

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]

Trigger_Binary=1

; Primary trigger is always true as a one is in all jobs

Trigger_Variable=UserPinVariable:NotFound

; If the variable is still the initialization value, then the job was not a delivery note

; then simply continue printing with out changes

Exit=ON

[Insert the pin into the data stream]

Trigger_Binary=1

; This triggered rule is evaluated after the rue above, and becomes always TRUE

ELP_Command=K1;

; Dummy command, that next Command is executed, you may add forms and any other ELP_commands

EraseAllPJL=ON

; Erase any PJL commands from the stream

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@

; Inserts the initializations for the PIN codes.

 

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 device NULL. 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