Configure/Install Print Agents

NOTE: This document is for the Java based Print Agent. if you where looking for the .Net based version, you find it here.

The IFS Print Agent is a stand-alone server component responsible for printing formatted business documents (operational reports) created using Report Designer layouts. The PDF documents generated by the IFS Report Formatter during the formatting step are then picked up by the Print Agent and sent for printing. This document guides you through the installation process and the configuration for the Print Agent functionality. You can read a bit more about the print agent on the overview page.

Contents

Setup Print Agent

Configuration  & Installation

To begin installation you must first download the zip file which contains the required scripts and configuration files for installing a Print Agent. The zip file can be download through the Add-ons page. A link to the Add-ons page can be found in the IFS Applications Landing Page.

Landing Page

Addon Page

 

  1. Click on the appropriate link to download the 32 bit or the 64 bit version of the IFS Print Agent Java installation version from the Add-ons page. You might be prompt to provide login information. If so, provide your IFS Application login details. e.g. ALAIN and ALAIN user password.

    Both 32 bit and 64 bit is supported. Use the corresponding zip file. Unpack it into a folder on the same or a different machine to install the Print Agent. 

  2. Set the JAVA_HOME  variable in your environment variables.

    JAVA_HOME - path to the java installation folder. For instance C:\Program Files\Java\jre1.8.0_04. You must use java 1.8 or higher!

  3. Run the install script.  install.cmd located in the root of your recently unpacked zip file.

           PA Installer

  1. Type 1 and press enter. Now enter the node name of your new Print Agent. Try to use informative names such as including the host machine name or site to make the Print Agent easily identified.
    You can add as many nodes as you like and they can be removed later with option 2.
    Option 3 and 4 is normally not used since the required parameter are already filled in by default. It will automatically connect to the extended server you copied the zip file from.
  2. Exit the installer. You now have a new folder under <root>\agents for each node you installed and you also have new services registered for your new Print Agents
  3. Go to the folder for the Print Agent (<root>\agents\<node name>)
    Specify the Printer mapping information in printagent_conf.xml:
    Parameter Description
    ID This is the node name added by the installer. Don't change it.
    USER/PASSWORD Credentials used by the Print agent when connecting to the extended server. It is better to locate the zip file in the extended server you want to connect then actually changing these parameters.
    URL The connection string. Do not change this. Same reason as above.
    PDFL_VERSION Which version of Datalogics PDF Library to use. Version 10.0 and 8.1 is supported. 10.0 is the most recent version, but does not have support for printing to different trays/bins.
    PRINTING_PARAMETERS_FILE The name of the configuration file for Print Agent printing parameters. Default is ifs-printing.properties.
    POLL_TIME How often this agent checks for new jobs (in seconds).
    PRINTER_MAPPINGS A list of printers serviced by this node, each printer mapping contains:
    LOGICAL Name of logical printer, must match the name specified in system configuration. Make sure the printer name does not contain any white spaces as this is not supported.
    PHYSICAL Path to corresponding physical printer (relative from the server running the Print Agent).
    SOCKET_SPOOLER Used to switch the Socket Spooler functionality ON and OFF. This is by default OFF. See more details further down in this document.
    PRINT_AGENT Used to determine if the normal print agent polling functionality should be started. This is ON by default and should be ON in most cases. It is really only when you want to run a dedicated Socket Spooler that you would ever consider turning this OFF.

    Following is a sample printagent_conf.xml file with the information listed above.

    <REMOTE_PRINTING_NODE>
      <ID>PA1</ID> 
      <POLL_TIME>10</POLL_TIME> 
      <USER>IFSPRINT</USER> 
      <PASSWORD>DgQIjcX+WBHI/WxB2trE/U2iX6KOPxfiib65</PASSWORD> 
      <URL>extendedserverhost:58080</URL>
      <PDFL_VERSION>10.0</PDFL_VERSION>
      <PRINTING_PARAMETERS_FILE>ifs-printing.properties</PRINTING_PARAMETERS_FILE>
      <PRINTER_MAPPINGS>
        <PRINTER_MAPPING>
          <LOGICAL>PRINTER1</LOGICAL> 
          <PHYSICAL>\\GBGFS1\GBG2M</PHYSICAL> 
        </PRINTER_MAPPING>
      </PRINTER_MAPPINGS>
      <PRINT_AGENT>ON</PRINT_AGENT>
      <SOCKET_SPOOLER>OFF</SOCKET_SPOOLER>
    </REMOTE_PRINTING_NODE>


     

    Note: In order for a print job to be picked up at all a Report Formatter needs to have the logical printer defined/listed. Hence, it's not enough to only make the logical to physical mapping in the Print Agent configuration, you also need to make sure that the logical printer is included in the printer list of a Report Formatter. It's not necessary to map the logical printer to a physical in the Report Formatter configuration when you're using a Print Agent for a printer though.

  4. Start the Print Agent in console mode.  Use the start script start_printagent_console.cmd

Verify

Once the print agent is started in console you will get debug printouts. After waiting jobs have been processed it should say something like this.
10 DEBUG [Framework] RemotePrintingNode.mainLoop(): Getting remote job
10 DEBUG [Framework] RemotePrintingNode.mainLoop(): No jobs found.
If you want to abort the install script, press Ctrl-C.
 

Configure Print Agent for HTTPS

There is no manual configuration needed to configure Print Agent for HTTPS. Once the Middleware server is configured for HTTPS, the created Print Agent_<bit_version>_<instance>.zip files automatically get updated and configured to run in a SSL environment. The two files in PrintAgent.zip, ifs-print agent-config.xml and ifs-print agent-service.ifm get updated accordingly and a key store Keystore<instance>.jks will get copied to the print agent Zip file.

All you need  to do is, install a fresh Print Agent using a newly created ZIP file after the HTTPS configuration.

Run Print Agent

The Print Agent can be started either using the start_printagent_console.cmd script or by running the registered service with start_printagent_service.cmd. It's recommended to run the Print Agent in console mode first to make sure it works properly and then run it as a service.

When started, the node will register itself with the server and as long as it is running all print jobs destined to a printer on this node's list will not be spooled by the Report Formatter. Instead the PDF will be created and later fetched and printed by the Print Agent. Use the Windows Service, to monitor the Print Agent status.

When run as a Windows Service the printers must be configured to accept anonymous printing, or the service must be run as a user with printing rights. There could be situations where some specific printers might have special security and access levels which limits leverage of printing, hence it is recommended to run the Print Agent service from an admin user who has full rights accordingly. The same applies for the Report Formatter when that is set up to spool print jobs to a printer.

Run Print Agent in Windows 10

When running Print Agent in Windows 10 for development purposes always run the Print Agent with Administrative privileges.

You will get issues when starting Print Agent in console mode, using start_printagent_console.cmd script directly or running it in "Run as Administrator" mode. Instead open up a command prompt window in "Run as Administrator" mode and run the start_printagent_console.cmd script from that window.

When starting Print Agent in service mode, run the start_printagent_service.cmd script directly in "Run as Administrator" mode.

Printing Properties

It is possible to change a lot of minor settings for the PDF Library printing. However that default values should work fine in most scenarios.
If you have problems, it might be a solution to amend them. On this page you can find a full list of the various properties.

 

Socket Spooler

This functionality is mostly used when spooling ZPL printouts socket listening label printers but has a few other features that can come in handy in some setups.
Please see the overview page for a description of this functionality.

To use this you first have to enable it in the printagent_conf.xml with the socket spooler option set to ON.

<SOCKET_SPOOLER>ON</SOCKET_SPOOLER>

Located in the print agent folder you can find the socket spooler configuration file; "ifs-spooler-config.properties"

ThreadParameterDescription
Socket Listenerlistener#Listeners will listen for incoming connections on a port and pass the jobs to a spool queue.
  port*The port to listen to. Any socket connections on this port will be picked up and the content being passed will be placed in a spool queue.
  path*The folder location of the spool queue. Here all queue related files will be saved.
Queue Processorqueue-processor#Queue Processors will poll a spool queue and send jobs to a printer, file or folder. Both socket and UNC-paths are supported.
  path*The folder location of the queue to process
  printer*The destination printer. It can be either a host:port for socket connections or a UNC path for printer queues. But is can also be a folder or file.
  delayThis is the delay between each print in milliseconds. This is by default 0, but can be increased to reduce the load on slow printers.
  polltimeThis is the polling wait time and the default value is 5000. It is the sleep time for the process when no jobs are found in the queue. When the queue has multiple jobs, there will be no wait between each job. Use delay instead if you want to control this.
  outputThis option can be either merged or separated were merged is the default. In the merged mode, multiple jobs will be sent to the printer during the same connection. If you print to a folder, all jobs will be concatenated into the same spool file. In the separated mode, each job has its own socket connation or spool file.
File Processorfile-processor#File Processors will poll a folder for files and pass them to a printer, file or folder. Both socket and UNC-paths are supported.
  path*The folder path where files will be polled from.
  printer*, delay, polltime, outputSame as for Queue Processor, but path means the folder path where files will be polled from.

* mandatory properties

 

The following is a sample ifs-spooler-config.properties file with the information listed above.

# SPOOLER CONFIGURATION

# Multiple listeners and processors can be added, just name them listenerX and processorX where "X" is a number.
# No two listeners or processors should work on the same source but it is fine to use the same output target.

# Listeners will listen for incoming connections on a port and pass the jobs to a spool queue.
# Queue Processors will poll a spool queue and send jobs to a printer,file or folder. Both socket and UNC-paths are supported.
# File Processors will poll a folder for files and pass them to a printer, file or folder. Both socket and UNC-paths are supported.
# For processors "polltime" and "delay" is in milliseconds but can be obmitted. The default values are: polltime=5000 and delay=0

listener1.port=9100
listener1.path=d:\tmp\spooler

#listener2.port=9300
#listener2.path=c:\tmp\spooler2

queue-processor1.printer=d:\tmp\spooler2\printer.txt
queue-processor1.path=d:\tmp\spooler
queue-processor1.delay=0
queue-processor1.polltime=5000


#queue-processor2.path=d:\tmp\spooler
#queue-processor2.printer=d:\tmp\spooler3

#file-processor1.printer=//lkpprinter1/GBG2C
#file-processor1.path=c:\tmp\files_to_print

file-processor2.printer=localhost:9100
file-processor2.path=d:\tmp\spooler3
file-processor2.polltime=5000
file-processor2.delay=0
file-processor2.output=separated