The UnForm command line's -o argument specifies where the job's primary output goes.  If the unform server is unable to open the value specified, there is a launch error, and the job does not start.  Below are some scenerios to consider:


Windows Permissions

When UnForm is run as a service, it runs under a user ID, by default the Local System Account.  If the account it runs under does not have permission to print to a device or shared printer, there will be an error.  The local system account has no network access, so is unable to print to network printers.  Other user accounts may not have permission to print to a share on another computer on the network.


This applies to both UNC name (-o \\server\share or -o //server/share) and to Windows print queues (-o "*windev*;printername").  Note that on Windows Server 2008, UNC names were not supported until UnForm 8.0.22.


To solve this issue, an administrator needs to configure the UnForm service to run under a user account that has permission to print to any and all printers required by the installation.


Direct Printing to a Network Printer

UnForm can print to a network printer by specifying -o tcp:xx.xx.xx.xx (a "tcp:" prefix followed by the IP address or IPv4 name of the printer).  This works well and bypasses any Windows printer permission errors.  However, if the printer is not available or runs out of memory, an error occurs and the job is lost.  If the application makes reprinting difficult, printing to a spooler rather than directly to the printer is preferred.


Unix Spooler Errors

If the output device is a pipe to a Unix spooler, and the printing fails, it is usually easy to diagnose the problem by directing the spooler's error output to a file.  In the sample below, error output is sent to /tmp/hp4000.err:


-o "|lp -dhp4000 -oraw 2>/tmp/hp4000.err"