Installation and concept in the same document. Long and complex explanations in the overview.
Also remove install part since it belongs in installation guide - focus on admin/config
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.
The IFS Print Agent is responsible for printing the pre-formatted PDF documents that are created and stored in the database by the Report Formatter. It is a standalone piece of software which runs on a local server close to the printer. When a report is printed to a logical printer using a Report Designer layout, the Report Formatter picks up the job and formats the report given the layout and configured locale. The result of the formatting step is a PDF document that is stored in the database. The Print Agent polls the print queue for PDF's to be printed at a configurable interval and when a formatted report is found it's transferred over the network. Then it will be printed on the local area network by the Print Agent to the printer defined in the configuration logical to physical printer mapping.
Print Agent functionality was designed to overcome problems with printing over a Wide Area Network (WAN). For instance, in an Extended Server installation where the IFS Report Formatter performs both formatting and printing of PDF documents, it is the Report Formatter that spools the print jobs to the printer. These printer spool streams are usually quite big and if the printer is connected to the server over a WAN the printing performance can be quite poor. The solution is to separate the printing from Report Formatter and use a Print Agent to perform printing instead. In IFS Applications 8 the Print Agent will be highly recommended and more or less be a default component in a production environment. Using a Report Formatter to handle printouts is still possible but should only be considered in demo or development environments.
To minimize the network load, especially when the printers are located on a site connected to the corporate server network through a wide are network (WAN), it's important the Print Agent is located/installed close to the printer (i.e. on the same LAN). The Print Agent should never be connected to the printers through a WAN. It's perfectly ok to have a WAN connection between the central servers (database and application server) and the Print Agent, but the printers and the Print Agent should reside on the same LAN.
IFS Print Agent can also be used to print Report Designer reports on Windows printers even if the central application server is running on Linux or Unix.
In Application 8 we support two different versions of Datalogics PDF Library, version 8.1 and version 10.0. We have kept 8.1 because there is a limitation in 10.0 regarding printing to trays/bins. If this functionality is required, use version 8.1.
To begin installation you must first locate the zip file which contains the required scripts and configuration files for installing a Print Agent. The zip file comes with the Extended Server installation. See below.
Locate the PrintAgent_32bit_<instance_name>.zip and PrintAgent_64bit_<instance_name>.zip files, where <instance_name> is the name of the Extended Server instance.
Operating System | Location |
---|---|
Windows | <root>\ifs\fndext\instance\<instance_name> |
Unix / Linux | Not yet supported |
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.
JAVA_HOME - path to the java installation folder. For instance C:\Program Files\Java\jre1.5.0_04. You must use java 1.5 or higher!
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). |
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> </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.
![]() |
Once the printagent 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. |
Two main steps should be followed to enable a secure connection between Print Agents and Server.
Add a new local variable CUSTOM_JVM_PARAMS
with value set to Trust Store Settings, and add it as
a parameter for java.exe
start_printagent_console.cmd
password
"%JAVA%\bin\java.exe" -Xmx128m %CUSTOM_JVM_PARAMS%
-classpath %CLASSPATH% ifs.fnd.printingnode.RemotePrintingNode CONF_FILE="%HOME%\ifs-printagent-config.xml"
E.g
set CUSTOM_JVM_PARAMS=-Djavax.net.ssl.trustStore="C:\GSE75\java\jre\lib\security\cacerts"
-Djavax.net.ssl.trustStorePassword=abcd"%JAVA%\bin\java.exe" -Xmx128m %CUSTOM_JVM_PARAMS% -classpath %CLASSPATH%
ifs.fnd.printingnode.RemotePrintingNode CONF_FILE="%HOME%\ifs-printagent-config.xml"
ifs-printagent-service.ifm
<IFS_HOME>
\java\jre\lib\security\cacerts"
-Djavax.net.ssl.trustStorePassword=password$SERVICE.CMD_LINE=F:\IFS\IFSJava\bin\java.exe -Xrs -Xmx128m &CUSTOM_JVM_PARAMS
-classpath &CLASSPATH ifs.fnd.printingnode.RemotePrintingNode CONF_FILE="&HOME\ifs-printagent-config.xmlE.g
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 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. The same applies for the Report Formatter when that is set up to spool print jobs to a printer.
The configuration of the Print Agent printing parameters is provided for testing and troubleshooting reasons only. We do not support any other settings than the ones provided in the default ifs-printing.properties file.
The default location for the ifs-printing.properties file which consists the printing parameters, is the same location where the print agent instance is installed. The location and the name of this file are set in the ifs-printagent-config.xml. So the name and the location can be changed, and the relevant changes in ifs-printagent-config.xml should be done accordingly.
The printing parameters belong to one out of the two objects PrintParams and PrintUserParams. PrintParams are the print settings, primarily used for PostScript printers or PostScript outputs. PrintUserParams are the user print settings.
The configuration file for the Print Agent printing parameters is a .properties file and can look like this:
The syntax is object.parameter=value and ## denotes the start of a one line comment.
The following information is copied from Datalogics documentation for PDF Library version 10.0.
The printing parameters for the object PrintUserParams:
Parameter | Value | Description |
---|---|---|
binaryOk | int | 1 turns on binary data, 0 turns it off. |
collate | boolean | Collate property |
doOpp | int | 1 uses OverPrint Preview, 0 does not. |
driverName | java.lang.String | The name of the driver (for example, "winspool"). |
emitHalftones | int | 1 turns on emit half-tones, 0 turns it off. |
emitToFile | boolean | Create a PostScript file. |
emitToPrinter | boolean | Output PDF file to a postScript printer. |
farEastFontOpt | FarEastFont(DOWNLOAD_ALL, DOWNLOAD_NONE, PRINT_AS_IMAGE) | One of FarEastFont. The default value is Download All. |
portName | java.lang.String | The name of the port (for example, "Ne00"). |
printAnnots | int | 1 turns on printing annotations, 0 turns it off. |
psLevel | int | PostScript level. |
reverse | int | 1 reverses the print order, 0 does regular order. |
shrinkToFit | boolean | True turns on binary data, 0 turns it off. |
startResult | int | Spooler ID from StartDoc(). |
transQuality | int | Transparency flattening quality control. |
The printing parameters for the object PrintParams:
Parameter | Value | Description |
---|---|---|
applyOCGPrintOverrides | boolean | When true, apply print-specific visibility state settings from the optional-content group. |
binaryOK | boolean | True if binary data is permitted in the PostScript file, false otherwise. |
bitmapResolution | long | DPI for bitmaps. |
boundingBox | rect | A rectangular frame that determines the dimension of an object that is placed inside a PDF document. (The BoundingBox is set by using PrintParams.BoundingBox=x1,y1,x2,y2) |
brokenCRD | boolean | If true, do not set rendering intent in PostScript stream due to broken non-default CRDs. |
centerCropBox | boolean | true if CropBox output is centered on the page when the CropBox < MediaBox, false otherwise. |
disableFlattening | boolean | Disable flattening of the PDF file; transparency data will be ignored. |
doOpp | boolean | Do the overprint preview operation. |
doProofing | boolean | When true, print using proofing settings. |
doTiling | PageTilingMode(NONE, TILE_ALL_PAGES, TILE_LARGE_PAGES) | Determines whether to tile non, all, or only large pages. |
duplex | Duplex(TUMBLE_LONG, TUMBLE_SHORT, OFF, SIMPLEX, DUPLEX_OFF, DUPLEX_VERTICAL, DUPLEX_HORIZONTAL, DUPLEX_SHORTSIDE, DUPLEX_LONGSIDE) | Sets the duplex mode if the device supports duplex printing. |
emitBG | boolean | Emit black generation. |
emitColorSeps | boolean | Emit images for Level-1 separations. |
emitDeviceExtGState | boolean | When emitting the extended graphics state, if this flag is true, include the device-dependent parameters (overprint, black generation, undercolor removal, transfer, halftone, halftone phase, smoothness, flatness, rendering intent) in addition to the device-independent parameters (font, line width, line cap, line join, miter limit, dash pattern). |
emitFlatness | boolean | Honors the flatness setting over gstate flatness. |
emitHalftones | boolean | Preserve any halftone screening in the PDF file. |
emitInRipSeps | boolean | When true, it requests that separations, one sheet per ink, be generated in the RIP (printer). |
emitPageClip | boolean | Emit page clip. |
emitPageRotation | boolean | Emit a concat at the beginning of each page so that the page is properly rotated. |
emitPS | boolean | If true, emit a PostScript file. |
emitRawData | boolean | True if adding no unnecessary filters when emitting image data, false otherwise. |
emitSeparableImagesOnly | boolean | If emitting EPS, include only CMYK and gray images. |
emitTransfer | boolean | Emit transfer. |
emitTTFontsFirst | boolean | Emit True Type fonts before any other fonts. |
emitUCR | boolean | Emit undercolor removal. |
expandToFit | boolean | True if small pages are to be scaled up to fit the printer page size, false otherwise. |
farEastFontOpt | FarEastFont(DOWNLOAD_ALL, DOWNLOAD_NONE, PRINT_AS_IMAGE) | GDI to PS or download CJK fonts PDPDFarEastFont_Print_As_Image will not be honored. |
gradientResolution | long | DPI for gradients interior to the object (not edges). |
hostBasedCM | boolean | Do host Based color management using the destination profile. |
incBaseFonts | Inclusion(BY_RANGE, NEVER, ON_EVERY_PAGE, ONCE_PER_DOCUMENT, WHEN NEEDED) | Embed the base fonts. |
incCIDFonts | Inclusion(BY_RANGE, NEVER, ON_EVERY_PAGE, ONCE_PER_DOCUMENT, WHEN NEEDED) | Embed CID fonts. |
incEmbeddedFonts | Inclusion(BY_RANGE, NEVER, ON_EVERY_PAGE, ONCE_PER_DOCUMENT, WHEN NEEDED) | Embed fonts that are embedded in the PDF file. |
incOtherResources | Inclusion(BY_RANGE, NEVER, ON_EVERY_PAGE, ONCE_PER_DOCUMENT, WHEN NEEDED) | Include all other types of resources in the file. |
incProcsets | Inclusion(BY_RANGE, NEVER, ON_EVERY_PAGE, ONCE_PER_DOCUMENT, WHEN NEEDED) | Include Procsets in the file. |
incType1Fonts | Inclusion(BY_RANGE, NEVER, ON_EVERY_PAGE, ONCE_PER_DOCUMENT, WHEN NEEDED) | Embed True Type 1 fonts. |
inkBlack | boolean | Proofing settings: simulate ink black. |
lastHeight | int | Used when pageSize is true to prevent unneeded pagedevice calls. |
lastWidth | int | Used when pageSize is true to prevent unneeded pagedevice calls. |
lineWidth | float | The line weight to use for printer marks. |
macQDPrinter | booelan | True if the printer is a Mac QuickDraw printer, false otherwise. |
markStyle | int | Specify the style to use for page marks. |
mirrorprint | int | One of the following constants:
Mirroring is done in the PostScript output stream. |
negative | boolean | When true, invert the plate. |
numCollatedCopies | long | Enables collation for the viewer. |
optimizeForSpeed | boolean | If true, do it fast, false means PostScript code must be page-independent. |
outputType | OutputType(EPSMAC_EXTENDED_PREVIEW, EPSMAC_STANDARD_PREVIEW, EPSNO_PREVIEW, POST_SCRIPT) |
Print PostScript or EPS with or without a preview. |
paperWhite | boolean | Proofing settings: simulate paper white. |
printWhat | PrintWhat(DOCUMENT, DOCUMENT_AND_COMMENTS, DOCUMENT_AND_STAMPS, FORM_FIELDS_ONLY) | Print the document, the document and comments or document form fields only. |
printWhatAnnot | java.util.EnumSet<PrintWhatAnnotFlags>(NO_EXTRAS, PRINTER_MARKS, TRAP_ANNOTS) | Annotation flags which modify PDPrintWhat to enable Pro product behavior. |
psLevel | int | PostScript level: 1,2 or 3. |
reverse | boolean | If set to true, reverse the order of page output. |
rotate | boolean | Enable auto-rotating behavior from past versions of Acrobat. |
rotateAndCenter | boolean | True if the page is to be rotated to fit the printer's orientation and centered in the printer's page size; false, otherwise. |
saveVM | boolean | True means try to save VM when printing to PostScript. |
scale | float | The document-wide scale factor. |
setPageSize | boolean | (PostScript level 2 only) Set the page size on each page. |
shrinkToFit | boolean | True if the page is scaled to fit the printer page size; false, otherwise. |
suppressCJKSubstitution | boolean | If true, do not do CJK substitution on the printer. |
suppressCSA | boolean | Do not emit CSAs for 4-component (CMYK) colors. |
suppressOPPWhenNoSpots | boolean | When true, suppress OPP for pages that do not contain spot colors. |
transparencyQuality | long | The transparency flattening quality. |
trapType | int | The trap type. |
TTasCIDT2 | boolean | When this is set, emit True Type fonts as CIDType2 instead of as CIDFontType |
TTasT42 | boolean | If including True Type fonts, convert to Type 42 fonts instead of Type 1 fonts. |
useExecForm | boolean | When true, emit execform calls when emitting Form XObjects. |
useFontAliasNames | boolean | Used when printing with system fonts. |
useFullResolutionJP2KData | boolean | Determines wheter to use the maximum available JPEG2000 resolution. |
useMaxVM | boolean | If true, store all possible resources in VM. |
useSubFileDecode | boolean | Add subFileDecode filter to work around stream problems [false]. |
westernMarksStyle | boolean | When true, use western style for page marks. |
whichMarks | java.util.EnumSet<PageMarkFlags>(BLEED_MARKS, COLOR_BARS, CROP_MARKS, PAGE_INFO, REGISTRATION_MARKS, SLUR_MARKS, TRIM_MARKS) | Page mark indication. |