There are several reason where ELP needs to split mainly mail merge type of data streams: 

  • Staple each individual part like a single invoice, see Examples
  • Archive each individual part like a single invoice, see Examples
  • Duplicate each page, each N pages or each variable amount of pages and staple them together
  • Generate X copies and staple each copy
  • Generate a Job Offset in the output stacker for each job part
  • Split every Xth page and staple
  • Staple first N pages of the job
  • Sort the single document parts 
  • Split jobs to several devices, in order to minimize print time
  • etc.

The technology how ELP handles the print job splitting is usually like this:

  • Receive the job on windows queue 1
  • Split during printing: Instead of printing the job to the printer, send it to another or tagged as the second pass to the same windows queue: OutPort method
  • Split during archiving: Open an archive directory and split the singularized jobs direct in that directory: OutArchiveDir
  • Search for the last page of each individual job (first page search process is in development) and
  • Split it right after the next form feed by closing the out-writing and re-open the writing again. So a new job is generated in the receiving queue

The way how data streams can be splitted are:

  • Split every page
  • Split after fixed N Pages
  • Variable splitting by inserting a special ELP native Escape - Sequence

All three ways can be set in the ELP Control Center menus: Archiving and Job Distribution.

As ELP needs to ensure that each part job can be printed on it own, the part initialization is pretty complex and can be influenced using ELP keys. In the following is described how ELP processes the initialization of a new job while splitting during printing (SplitAfterEachCopy, SplitEveryPage, SplitCmdInStream, etc.) or archiving (key: OutArchiveSplitFiles).

  1. Using the OutPort method:
    a. ELP will close the connection to the port and reopen it again, right away. In case the job was splitted right after the last formfeed, this may lead into an empty additional job.
    b. If a cover sheet using the key: PortCoverSheet was set, the form is sent first as a separate job to the port. All variables in the cover macro are replaced with their actual values.
    Using the OutArchiveDir with the key: OutArchiveSplitFiles:
    a. ELP closes the storage file, rename it to the requested naming instructions and open in the same directory a new temporary file.
  2. Using the OutPort method and the key: DoNotInitializeNewSplitStream or the key SplitAfterEachCopy there are no additional initialization things and sequences added to the stream!

    otherwise
  3. Using the OutPort method: if a semicolon with a unique job initialization was added, those sequences are sent and the initialization is terminated.
    Example: outPort=\\#HOSTANME#\#PRINTERSHARENAME#;\x1B%-12345X@PJL ENTER LANGUAGE=PCL\x0A\x1BE\x1B&l26aO

    otherwise
  4. ELP does automatically collected the job initialization from the beginning of the job. In case the routine was not ended before, this initalizationis now added in front of the new job.
    Notes:
    a. In case the key EarseALLPJL is turned ON, the possible @PJL commands including the leading UEL are not inserted.
    b. If the key EraseAllESc is turned ON and(!) "Escape E" is the first PCL command in the job or after EraseAllPCL, then this command is also erased.
    Both is needed for example to collect data streams in order to staple them together.
  5. Then the actual stream settings like Page Size, Paper tray etc are inserted.
  6. Insert the color and shading definitions and their actual settings
  7. Insert all collected fonts and macros
  8. If the FOR module is licensed, ELP does now insert the definition of the key: ELP_INIT_PCL. if no ELP_Command is used, then define ELP_Command=K1;  and the key in any executed section.
  9. Set the correct actual font
  10. Download the HP GL initialization, if there was one.
  11. a. While splitting a single file ELP inserts now the ELP_Command defined on top of next page and the possible definition of the keys: InsertOnTopOfPage and InsertAfterNextFormFeed.
    b. Otherwise the commands between job copies.