UnForm (r) Version 7.1 Copyright 1997-2006 by Allen Miglore. All rights reserved. UnForm is a registered trademark of Synergetic Data Systems Inc. Published under license by: Synergetic Data Systems Inc. 2195 Talon Drive Latrobe, CA 95682 Phone: (530)-672-9970, Fax: (530)-672-9975 Email: sdsi@synergetic-data.com Web: http://synergetic-data.com RELEASE HISTORY Version 7.1.01 released December 14, 2007 Version 7.1.02 released December 31, 2007 Version 7.1.03 released January 4, 2008 Version 7.1.04 released January 31, 2008 Version 7.1.05 released February 6, 2008 Version 7.1.06 released Febrary 14, 2008 Version 7.1.07 released Febrary 25, 2008 Version 7.1.08 released March 31, 2008 Version 7.1.09 released April 22, 2008 Version 7.1.10 released May 5, 2008 Version 7.1.11 released May 21, 2008 Version 7.1.12 released June 2, 2008 Version 7.1.13 released June 30, 2008 Version 7.1.14 released July 17, 2008 Version 7.1.15 released December 1, 2008 Version 7.1.16 released January 9, 2009 Version 7.1.17 released February 16, 2009 Version 7.1.18 released March 23, 2009 Version 7.1.19 released April 16, 2009 Version 7.1.20 released July 10, 2009 Version 7.1.21 released August 13, 2009 Version 7.1.22 released September 11, 2009 Version 7.1.23 released December 8, 2009 Version 7.1.24 released September 8, 2010 Version 7.1.25 released March 24, 2011 Installation and configuration details are provided in the manual, provided as unform71.pdf. Details about version 7.0 and 7.1 enhancements are also provided. CONFIGURATION NOTE REGARDING THE WINDOWS SUPPORT SERVER To fax PDF files via the msfax() function, the Support Server needs access to GhostScript (follow "obtain" links on ghostscript.com). For bundled Support Servers (those included with a Windows UnForm server), just configure Ghostscript in the UnForm server configuration. For stand-alone installs, the Support Server has its own configuration. LINE COMMAND POSITION CHANGE FROM VERSION 7.0 To be consistent with the column and row positions of the box command, the line command has been modified so that column and row positions are based on the center of a character cell. The position 1,1 is now the center of the cell, rather than the lower-right of the cell. Rule sets that use the line command need to be modified to reduce the column and row positions by 0.5. For example, line 2,1,40.5,1 should be changed to line 1.5,.5,40,.5. CHANGE HISTORY 7.1.02 12/18/07 - Corrected a problem with constants not being resolved in rule set merge command parameters. 12/19/07 - Corrected a problem with the last annotation in a pdf job carrying forward to later pages. 12/20/07 - Added support for multi-dimensional arrays in designer watch. 12/31/07 - Corrected licensing screen errors on Windows when the server is installed in the Progam Files directory (or any directory with spaces in the name). 7.1.03 1/2/08 - Changed the design tool to save dsn_sample files with a true formfeed character rather than the visual sequence displayed in the samples tab. 1/4/08 - Corrected a problem with images.dat not being purged and possibly causing a hang while being purged. 7.1.04 1/8/08 - Modified keyword option on archive commands to support 'keywords 0' to disable generation of any keywords for a document. 1/10/08 - Corrected a bug when using a javascript command and referencing the copy variable in a code block. If code used copy in a way that would cause an error if was outside the range of 1 to copies, an error would occur. 1/10/08 - Corrected a browser search or -arcsearch problem with date ranges. 1/10/08 - Added new support in uf71c.exe for Adobe-based print handling. Rather than -o device, you can use -p win:printername or -p win:default or -p win:dflt values. A -p win will still behave as before, displaying a printer selection dialog and printing to the chosen printer, though Acrobat leaves an open window behind. These options are documented in the manual's command line arguments section. 1/13/08 - Modified the default docview.html template to display the document title and library more intuitively. Changes for the image viewers are planned to allow the title to be displayed. 1/14/08 - Modified the Image Manager to not display libraries that the user does not have write access to. Until this change, the libraries would be displayed and selectable, but no writing or reading of content was allowed, resulting in confusion. 1/14/08 - Corrected an event timing issue in the Image Manager that could prevent zone selection from displaying the correct zone name. 1/16/08 - Corrected an Image Manager problem with a masked input field in a custom form not returning a value. 1/16/08 - Modified the browser search bulk export to html coding to ignore documents that can't be extracted due to corruption. The former logic would stop the export process. 1/22/08 - Added logging of internal search information to the server log file if logdetail=1 in uf71d.ini, to aid in debugging of search results. 1/22/08 - Corrected a design tool overflow error if designer security is enabled and a rule file over 64K is saved or published. 1/23/08 - Corrected a browser search bulk html export problem that resulted in links being to the incorrect file. This error was introduced in the change made on 1/16/08. 1/24/08 - Modified browser maintenance Analyze and Repair option to purge document and image property records that are so corrupt they can't be read as structured data, and therefore cause problems with browsing and searching. 1/29/08 - Corrected the -jobs -detail column data, which did not include a job input size, so the header row was mismatched with the data rows. 1/30/08 - Corrected a problem where the -debug option would not leave files in the temp directory, depending upon the timing of commands executed by the client and the length of the job. 1/30/08 - Corrected a Courier textwidth calculation bug. 1/31/08 - Corrected a browse by doc type problem if the one doc type is the start of the next doc type. Both doc types are displayed. For example, Check and CheckReg would be displayed while browsing the Check type. 7.1.05 2/1/08 - Corrected a bug in uf71c.pl that prevented the -active option from working with the -jobs option. 2/4/08 - Corrected an overflow error in the design tool when a margin command was used and drawing was performed on the preview image. 2/5/08 - Corrected a problem when the support server was used to convert to pcl color images. Black and white images would be produced. 2/5/08 - Corrected a pcl fit/wrap problem where bold proportional fonts were calculated as if in normal weight. 2/6/08 - Corrected a problem on Windows where the server would remove the temp/tmp directory if no jobs were submitted within a configurable purge cycle. As a result, jobs would hang until the unform server was restarted, which re-created the temp/tmp directory. 7.1.06 2/7/08 - Corrected a runtime error in the design tool when a Find All was used, the text was not found, the last rule set in the file had more lines than the first rule set, and the user clicked a low line in the rule set window before any other rule set work. 2/7/08 - Added support for -status and -nostatus to uf71c.exe. 2/11/08 - Added support for txtSourceFile in the Image Manager script routines, to allow custom code to manipulate (or erase) a source file imported and/or uploaded by the program. 2/11/08 - Corrected an Image Manager bug where the PostUpload procedure would only run on the last of the selected images. 2/11/08 - Added requirement for a non-null document type, and a configurable requirement for a non-null document ID, in the Image Manager. The File, Configure option provides access to the check box to enable null IDs. 2/11/08 - Corrected a problem where an update to a library record would remove user- and group-specific security records. 2/12/08 - Added code in the image manager to help avoid problems maintaining the "on file" checkboxes. 2/13/08 - Corrected an 'unterminated string constant' error in the Image Manager during job upload time if the document Notes field contained a CRLF character sequence. 2/14/08 - Enhanced the browser interface to streamline usage: Document and sub-document view and edit windows are now popups, so the search and browse screens remain on the document listings. A viewing wrapper has been written for non-image files, and the image wrapper has been enhanced, to provide access to the document properties in a popover window, plus allow marking and editing of image properties. The image property window now allows editing of the document type and document ID, allowing users with proper permission (delete and write) to transfer an image from one document to another in the same library. 2/14/08 - Added a new -arcexists command line option to uf71c. This option does not require a user login, and simply returns a line with a 0 or 1 if a specified library, doctype, doc ID, or sub ID exists. The response is based on the information provided. With just -arclib, it will only determine if the library exists. Add -arcdoctype and it will determine if any documents of that type exist. Add -arcdocid and it will determine if the named document type and ID exist. Finally, add -arcsubid and it will determine if that type, ID, and sub ID exists. 2/14/08 - Restored support for native jpg images in pdf output, as a fall-back in case Image Magick is not available to convert images to pdf format. 7.1.08 2/16/08 - Modified browser interface calendar popup implementation to work properly on Firefox. 2/25/07 - Added ,async option to the jobexec() function, to allow subjobs to execute via the rpq directory, so the main job need not wait for subjob completion. Note that if the main job depends on subjob output, it will fail. Jobs must be designed to not depend on subjob output, generally by modifying the design to perform such logic in the subjob's context. The purpose of this modification is to allow main jobs to complete without the overhead of waiting for subjobs to complete. As the rpq job queue is used, subjobs will occupy license slots, but only when slots are available. jobexec("id","output","driver","arguments"[,async]) async=0 (default) to force main job to wait until the subjob is finished async=1 to queue subjob and allow main job to continue 2/25/08 - Fixed Unix auto-licensing to use HTTP/1.1 protocol to be compatible with our new web server. 2/27/08 - Modified the design tool Find in all rule sets code to pause 100ms between rule sets as the search progressed, in order to avoid run-time error 5 problems resulting from VB runtime timing issues. 2/28/08 - Added support for paths with forward slashes in uf71c.exe. 3/12/08 - Added a feature in the Image Manager to accept a command line argument '-file filename', in addition to existing connection command line arguments. The filename is automatically imported as if the File, Import option was selected. 3/24/08 - Added code to briefly return control to the operating system at a number of points where UnForm may become cpu-bound, in order to allow multiple competing tasks (including multiple unform tasks) to better interact. 7.1.09 4/04/08 - Corrected a run-time error 5 in the design tool when the rule set selection window is minimized. 4/10/08 - Modified some purge routines to perform outside of the main listener task to improve listener performance. 4/21/08 - Modified the Windows Support Server to manage socket activity using byte arrays and looping constructs rather than strings and events, in an effort to reduce memory overflow problems. 4/22/08 - Modified data delivery routines in the unform server and the http server to improve performance and avoid potential lockups when transmitting large data files. 4/22/08 - Modified uf71c.exe to display local IP addresses when an error connecting to the server occurs. 7.1.10 4/23/08 - Corrected a problem in postscript grid rows when the grid row height was exactly 1 row, which resulted in the loss of a lower grid line. 5/5/08 - Modified the parsing of the input file to reduce memory usage and optimize parsing when processing large files. If an input file was very large, UnForm was using techniques that would result in excess cpu and memory utilization and poor performance. 5/5/08 - Added a new command-line option (-notextjob) which suppresses the construction of the textjob$[] array, saving input file parsing effort. 7.1.11 5/14/08 - Corrected a problem where color was not maintained on multi-line text commands in postscript output. 5/19/08 - Added some 'wait 0' commands to the web/en-us/marked.rul to_pdf rule set to help prevent Windows file system timing issues from causing problems with creating a pdf successfully. 5/21/08 - Modified cgi subid=@ handling to auto-display not just @unform, but any non-@text sub id if only one exists for the document. 5/21/08 - Corrected a problem where color carried over from circle, line, and box commands to affect hline and vline commands, which do not support color. 5/21/08 - Changed the Windows run-time engine to a patched version from the vendor that corrects an issue that causes heavily loaded servers to sometimes have problems starting jobs. 5/21/08 - Corrected a designer search all rulesets bug where the first rule set non-global rule set would be skipped. 7.1.12 5/30/08 - Corrected a problem with pass-thru jobs that could get in a loop during the rule file parsing. 5/30/08 - Removed an extraneous log entry when the server disconnected normally from a job process handler. 5/30/08 - Corrected a problem where some binary input files could be interpreted as embedded rule sets if they started with a [xxx] sequence and contained a formfeed character within the data. Specifically, a ProvideX data file could cause this depending on its content. 6/1/08 - Corrected a problem with bulk copy or transfer operations in the archive browser interface, where the operation stopped running after several hundred documents had been copied. 6/1/08 - Corrected a problem with bulk copy or transfer operations in the archive browser interface, where the target library needed to be created before a copy or transfer could take place. 7.1.13 6/3/08 - Corrected a PDF error if a missing jpeg image is specified in an image command for pdf output. 6/4/08 - Corrected a problem with subjob output names that contained UNC formats (i.e. \\server\printer became /server/printer). Now the swap of double backslashes to single slashes only occurs if the name contains \\\\, indicating a UNC with doubled backslashes. 6/24/08 - Updated lex tables in Windows distribution to include support for runtime features that we not previously enabled (ie cmp/ucp functions). 6/24/08 - Updated design tool to avoid an overflow error when an internal grid setting for width exceeded approximately 2500 pixels. 7.1.14 7/1/08 - Fixed the Image Manager to close DB lookup connections when the lookup is complete, rather than wait until the program closes. 7/14/08 - Updated Image Manager, adding a new feature to allow configuration of Image Magick, along with a checkbox option to convert images to PDF files at upload time. If configured, the Image Manager will convert image files, such as TIF and PNG files, to PDF format as they are uploaded to libraries. 7/14/08 - Updated the Image Manager scripting interface to address a problem with custom sections not being saved on some systems. 7/16/08 - Corrected two memory leaks in the Image Manager, one associated with importing a large image, the other associated with multiple barcode interpretations, which could cause excess memory build up on large batches of barcode-detected jobs. 7/16/08 - Corrected a problem where PreUpload/PostUpload scripts would not execute for jobs defined as header/attach jobs. 7/17/08 - Modifed Image Manager to retain table and column definitions in Database Lookup configuration when the data source changes. This change allows modification to the DSN without loss of job configuration, in cases where a lookup was defined on a system with a different DSN name. 7/17/08 - Restored ability to modify the doc type and doc ID while editing a document in the browser interface. This ability had been lost at a prior change in the browser interface to provide a better message in cases where a direct document view targeted an invalid document. 7/17/08 - Modified the browser interface to prevent accidental overwriting of a duplicate document when the doc ID was changed on an image edit and the new doc ID contained a matching sub ID. 7.0.15 7/22/08 - Corrected support server support for converting to zpl images. 8/1/08 - Corrected a problem in the Image Manager where if a barcode zone was filtered after an initial recognition attempt, the filtered image would not be the one used in the second recognition attempt, resulting in failure to decode barcodes on images that need filtering. 8/20/08 - Fixed -makemacro problem, also minor adjustments to -macrocopy and -macros command line parameters. 9/23/08 - Added support for hyphens in library names, which had been restricted in library maintenance. 9/29/08 - Corrected a problem in the Image Manager that prevented the last zone from being deleted from a job during job design. 10/2/08 - Added a checkbox feature to the Image Manager import action to delete imported files once imported. This is intended to help users who scan to disk and then import images into the Image Manager. 11/7/08 - Modified lookup testing in the Image Manager to not force a save of the lookup, potentially damaging a pre-defined lookup pointing to an invalid data source. Now the test uses a temporary version of the lookup definition. 11/12/08 - Corrected a setting in a grid control used by lookups in the Image Manager so that more than 100 records would be displayed. 11/12/08 - Corrected an error when refreshing a lookup in the Image Manager. 11/18/08 - Modified the user-document entity ID match test in the browser interface to be based on space-trimmed values, and to not be case-sensitive. The case-sensitivity change was to provide consistency between the browse indexes, which are not case-sensitive, and the ID verification before the document is viewed. 11/25/08 - Modified a system call method that caused defunct processes to remain on some systems with large disk arrays. The new method uses a temporary file rather than a read-only pipe to capture system information. 12/1/08 - Corrected a bug in shadow record maintenance when an archive document is rekeyed (new doc type or doc ID) in browser maintenance. The shadow record for sub documents would be wrong, resulting in a loss of data if the library was rebuilt from shadow records. A repair option in maintenance will correct the bad shadow records (if on a current release). 12/1/08 - Updated the underlying MailCall technology to support SMTPS, or SMTP over SSL, which is a secure protocol used by many mail servers, such as the smtp.gmail.com server available to gmail account holders. To use this feature, the server= line specified in the prog/mailcall.ini file can be specified with a "ssl:" prefix, such as server=ssl:smtp.gmail.com. The default port for SMTPS is 465. To override this, you can modify the port= value, or add a server suffix (server=ssl:smtp.gmail.com:465). 7.1.16 12/4/08 - Update Image Manager database lookups to support schema prefixes on table names, which are required by some ODBC drivers. 12/31/08 - Corrected a problem with the log() function when writing to a private log file on Windows, where lines would be terminated with CRCRLF. 1/9/09 - Corrected a problem in the internal httpd server when serving large files. The files would not always be fully sent, depending on network speed and traffic. 7.1.17 1/13/09 - Added a Redhat PPC 32bit port 1/13/09 - Corrected a problem where the uf.maxdatarows value contained the max data row of the last page, not the whole job. 1/20/09 - Corrected a problem where adding an image via the web browser would cause a loss of several document meta-data properties unless the document idenfication (type and ID) changed. 2/9/09 - Corrected an error in entity ID category records, where the date subindex would not be correct. 2/10/09 - Performance enhancement when processing large pdf images. 2/16/09 - Added the -suid command line option for Unix/Linux uf71c. We modified the default behavior of uf71c to not run under setuid mode. This mode was implemented at 7.0 to accomodate running uf71c in situations such as behind lpr or within some cgi environments. However, a number of operating systems supply common commands (i.e. /usr/bin/lp) as scripts which themselves will not run within the limited environment created by a setuid-capable perl script, due to their reliance on a full PATH environment variable. Since uf71c is run in non-suid modes more commonly that not, it was decided as of this release to make this the default behavior. To return to the original behavior, add a -suid option to the uf71c command line. 7.1.18 2/19/09 - Added support for user-specified column delimiters in the Image Manager lookup configuration screen. These delimiters are used to bracket non-alphanumeric column and table names in the SQL command that is generated for the lookup. The default delimiters of [ and ] are not supported by all database drivers. 3/5/09 - Corrected a hang condition using the load command in a non-html rule set. 3/12/09 - Corrected a problem with external user access and uppercase entity ID values. 3/13/09 - Modified the Image Manager upload code to put less pressure on the unform server, to help reduce resource contention with other client tasks. 3/20/09 - Corrected a problem with marked records emailing where the color image option was being used even when not checked, and another problem where color image conversions for pdf output were using incorrect Image Magick size parameters. The noticable result of this was that using marked records to send a consolidated pdf file of images would have invalid images in the emailed pdf. This problem was exposed by a change in Image Magick. 3/23/09 - Corrected a problem when postscript output was redirected by an output$ setting in prejob, where the page content would be printed incorrectly to a work file rather than the new output. 7.1.19 4/2/09 - Corrected a problem maintaining date indexes for entity ID's, resulting in an error when an external browser user attempted to browse by date. 4/7/09 - Corrected a problem where only the first date of a given month would appear for an external user browsing a library by date. 4/13/09 - Modified the subid=@ logic in browser links to test the existance of any non-@text document, not just those whose subID's fall after @text in sort sequence. 4/16/09 - Modified an internal file parsing function used by the merge command to support high-bit characters in rule set commands in the merged data. 7.1.20 4/27/09 - Corrected a problem in the uf71c.exe client that was misreporting launch errors as error code 0, which also prevented retry logic from being processed. 5/5/09 - Corrected an Image Manager problem where header/attach jobs designed to remove the header page image were not removing the files. 6/17/09 - Added extra handling in the Image Manager upload process to more gracefully deal with timeout or other errors when uploading an image. The status message is updated to indicate the error, and if pdf conversion was performed, the pdf file is removed to avoid confusion with the original image. 6/18/09 - Corrected a problem when retrieving a 0-byte output file via a network (non-localhost) connection to the server. In such a case, the output file would mirror the data of the input file incorrectly. 6/18/09 - Corrected a hang condition when certain coldef settings were used in the html driver. 6/22/09 - Added RotateLeft n and RotateRight n commands to the Image Manager scripting commands, where n is the degrees of rotation. See the Image Manager help, in the Scripting section, for more details. 6/23/09 - Corrected issue with 0-byte "<>" ascii in text command 7/9/09 - Modified the file type of the images.dat file to work around a file management bug in the run-time engine. In the former format, any image cache record that exceeded about 31K would cause space allocation that was not reclaimed each time the image was used. The new format doesn't exhibit this bug, but it is limited to 2GB in size. We don't expect this will cause a problem in any installation. To institute this new file type, simply erase images.dat and it will be recreated. 7.1.21 7/15/09 - Modified tray, bin, duplex handling for postscript printers to encode page by page inside postscript save/restore commands to work around postscript tray selection bug found in many printers. 7/20/09 - Corrected a postscript image bug if the same jpg image was used in multiple image commands on the same page. 7/22/09 - Modified the pdf object parsing functionality to handle new circumstances when object values contained adjacent dictionary objects. 8/6/09 - Modified updates to the library image file to work around problems caused by a corrupt image file that could prevent updates to later images. 8/12/09 - Corrected handling keywords=-1 to allow default of all words. 8/12/09 - Added a tiny wait during server-side -e file creation to work around file system timing issues on certain virtual machines. 8/13/09 - Modified images.dat creation to support systems that do not have zlib support. 7.1.22 8/17/09 - Added subtitle to the list of fields returned by -arclistdocs, after the former last field, size. 9/9/9 - Fixed a bug in -arcsubid when running -arcsearch[docs]. 9/11/09 - Retrofitted some socket file transfer performance enhancements developed for version 8.0 into the Windows uf71c.exe client. This affects only non-localhost connections from the client, and both the client and server must be updated to take advantage of the change. 7.1.23 9/22/09 - Modified Image Manager database lookup grid populate strategy to use direct record set query rather than relying on grid data binding, which may have exposed lookups to memory leaks. 9/24/09 - Corrected potential hang condition if a library could not be created during an archive operation, or a library did not exists in a putdocidprop function. 10/5/09 - Resolved a memory leak related to ODBC lookups in the Image Manager. 10/20/09 - Added support for jpeg parsing of jexif extensions found in some jpeg files. This comes into play when using .jpg images in pdf output without Image Magick or support server support. 11/01/09 - Corrected error 47 at 8050 in ufsrch.pv when a doc ID range was used whose value(s) were longer than a document type in the library. 11/20/09 - Corrected a problem with the -arcexists option reporting true (1) incorrectly when a sub ID did not exist. 12/8/09 - Corrected a problem with hline and vline when a box command with a 'top 0' option exists. 12/8/09 - Corrected a problem updating the document type or ID of an individual image, which resulted in re-keying all images of the document. 7.1.24 1/10/10 - Corrected a problem with -arcsearch using -arcdate/-arcdtm as a search criteria. 3/24/10 - Corrected the cannotate command, which was not working at all. 3/31/10 - Added parameter coding to the internal http server to allow serving of files larger than 16MB, which formerly caused an out of memory error. 7/21/10 - Modified timing of webdirs prefix testing to correct problem with custom message paths in the browser interface. 9/8/10 - Corrected a problem when changing the Sub ID value of an image in the browser interface. The new Sub ID record would be written without an associated image. 7.1.25 10/6/10 - Added an addition error trap to the proc process to log errors that occur recursively during the job closing process. 11/5/10 - Modified viewdoc_row.html template to use @encode tags on the href link construction. 1/28/11 - Corrected postscript output for jobs with no pages, to not print page closing code which caused a printing error. 3/22/11 - Corrected problem in browser interface 'add new image', which reported an error when attempting to add the new image to the library.