UnForm (r) Version 9.0 Copyright 1997-2014 by Allen Miglore. All rights reserved. UnForm is a registered trademark of Synergetic Data Systems Inc. UnForm is provided under a license, which must be accepted during installation. The text of this license is found in license.txt. Published under license by: Synergetic Data Systems Inc. 1040 Camarado Drive, Suite 100 Cameron Park, CA 95682 Phone: (530)-672-9970, Fax: (530)-672-9975 Email: sdsi@synergetic-data.com Web: http://synergetic-data.com RELEASE HISTORY Version 9.0.01 released July 1, 2014 Version 9.0.02 released July 15, 2014 Version 9.0.03 released July 25, 2014 Version 9.0.04 released August 9, 2014 Version 9.0.05 released September 12, 2014 Version 9.0.06 released October 21, 2014 Version 9.0.07 released November 14, 2014 Version 9.0.08 released December 16, 2014 Version 9.0.09 released January 9, 2015 Version 9.0.10 released March 16, 2015 Version 9.0.11 released April 3, 2015 Version 9.0.12 released May 14, 2015 Version 9.0.13 released June 9, 2015 Version 9.0.14 released July 20,2015 Version 9.0.15 released August 10, 2015 Version 9.0.16 released August 25, 2015 Version 9.0.17 released October 16, 2015 Version 9.0.18 released December 17, 2015 Version 9.0.19 skipped Version 9.0.20 released March 1, 2016 Version 9.0.21 released April 24, 2016 Version 9.0.22 released July 6, 2016 Version 9.0.23 released August 30, 2016 Version 9.0.24 released November 16, 2016 Version 9.0.25 released December 16, 2016 Version 9.0.26 released March 26,2017 Version 9.0.27 released May 11, 2017 Version 9.0.28 released September 8, 2017 Version 9.0.29 released November 6, 2017 Version 9.0.30 released December 4, 2017 Version 9.0.31 released February 8, 2018 Version 9.0.32 released April 14, 2018 Version 9.0.33 released June 7, 2018 Version 9.0.34 released August 2, 2018 Version 9.0.35 released November 12, 2018 Version 9.0.36 released March 22, 2020 NOTES: Complete documentation is provided in HTML format in the installation location. Navigate to web/en-us/documentation/index.html with a browser. It is also available at http://unform.com/unform9/documentation. Documentation is also available in PDF format at this URL: http://unform.com/download/unform90.pdf If you are upgrading from a previous release, see the Overview chapter, 9.0 Enhancements sub-topic in the manual. Of particular note if you use document archiving, the library formats have changed. A conversion tool is provided, documented in the Document Archiving and Management chapter, under the sub-topic Migrating Libraries from Previous Versions. 9.0.02 7/8/14 - Added support for escaped semicolons in message body text in the deliver command, to allow CSS through without truncation in an HTML message body. 7/9/14 - Updated the AIX build to include a new version of the runtime engine, as it appears the one initially included was a bad AIX build. 7/11/14 - Added logic to address runaway ufrp.pv process when tcpports are configured but cannot be opened (as might happen if v8 and v9 are configured to try to open the same ports). 7/11/14 - When the html5 driver was producing a non-color image, it might attempt to run Image Magick to convert to a PNG file. However, the default uf90d.ini file did not include the proper Magick configuration line for PNG files. To correct this oversight, add the following line to the [images] section of uf90d.ini: png="%i" -density %dx%d -units PixelsPerInch -filter Box -resize %xx%y -rotate %r -monochrome -type BiLevel "%o" >/dev/null 2>&1 Note this should be all on one line, and on Windows, do not include the ending ">/dev/null 2>&1" text, as those are for Unix/Linux systems. 7/11/14 - Added functions to the design tool to lookup and paste a file name (by default, one of 'image' type) at the cursor. The option is available on both the Edit menu dropdown and the toolbar. 7/11/14 - Corrected 'shade 0' text on top of 'shade 100' box or shade region in the html5 driver. Now 'shade 0' in text is converted internally to a color setting of 'white' to allow this text format to work in html5 the same way it does in pdf. 9.0.03 7/16/14 - Updated browser interface so if windows are opened outside the context of the menu handler, they do not cover the menu when maximized. 7/16/14 - Updated browser interface add image behavior when opened outside the menu context, to re-display the add image form after adding an image, without requiring a refresh of the document window. 7/18/14 - Addressed some issues with Apache setup when installing on a new Ubuntu/Debian Linux server with Apache 2.4+. 7/18/14 - Corrected a problem with uf90c.exe mis-reading arguments in a -z or -zx file, under some circumstances causing a job to error before launching. 7/21/14 - Added micrbold, micrlight, and micrnarrow synonyms for the three alternative micr names (micrb10, micrl15, and micrn1), to make using micr fonts in text commands more intuitive. 7/21/14 - Corrected ufparam.txt PCL micr font specfications for non-default micr fonts. To correct in the field, edit the following lines in the [softfonts] section of ufparam.txt (and ufparam.txc if you have that) to correct the file names to include a "6": micr6b10.sfp=15003 micr6l15.sfp=15004 micr6n1.sfp=15005 7/24/14 - Corrected a memory leak in the library object when writing subdocument image records. Normal use was not affected, but importing v8 libraries or long running rule sets that wrote many images to a library could encounter an error or hang condition caused by this. 7/24/14 - Fixed sticky preview options in the design tool, so several preview option settings are remembered across logins, and HTML5 zoom levels are maintained across preview runs. 7/24/14 - Resolved IE-specific issue in the Design Tool, when PDF preview mode was on and the user switches between rule sets that both have previously generated previews. The editor window would not be able to obtain keyboard focus until another focus event occurred, apparently due to Acrobat grabbing and keeping keyboard focus. 7/24/14 - Added a Details panel to the Design Tool watch tab, to display scrollable watch values in ASCII and Hex. 9.0.04 7/25/14 - Added a new uf.clientoutput$ variable, which stores the original client -o argument. Also added an output 'value' phrase to the Job complete log message, logging the same value. 7/25/14 - Updated mailcall STARTTLS timing and updated runtime engine to the vendor's latest point release for Windows. 7/28/14 - Changed Apache startup error capture to address an issue in 2003 Server not reporting a valid startup code. 8/1/14 - Corrected handling of the session setting to convert image files to PDF when viewing in the browser interface. 8/5/14 - Modified apache.conf to set 'KeepAliveTimeout 1' to prevent DTC communication errors due to an incompatibility between a DTC HTTP request and Apache responses during a keep-alive state. 8/5/14 - Added support for a 'cols n' option in the barcode command, designed to force 1D symbologies to fit the barcode within the specified number of columns. 8/8/14 - Corrected symbolic links for barcoding in Unix/Linux builds. Note that if you update from 9.0.03, you need to run ufsetup.sh again to get the proper links created. 8/8/14 - Corrected an error 26 in ufrast*.pv when a code block contained unform commands with expressions, and the rule set did not contain any other expressions. 8/9/14 - Updated internal regex in xmlreader class to work around a Windows-only XML parsing problem. 8/9/14 - Update image viewer to remember the setting of the Action tab. 9.0.05 8/11/14 - Added error 26 patch for prepage code block with unform commands with expressions. 8/12/14 - Added Linux 64-bit tbarcode version so that 64-bit only systems can print barcodes without installing 32-bit libraries. 8/17/14 - Corrected scaling of AFO in PDF output related to differences between detected output and -r (set rule set) output, due to a timing change in when margins and page sizes were calculated, to regain consistency with v8. 8/17/14 - Corrected an overlay scaling issue in html5, so that the background png file is scaled to a full page rather than within margins, so overlay images match that of other drivers. 8/18/14 - Added html5 "bug" to make shade/cshade with height 0 draw as 1 row. This makes html5 consistent with other drivers. 8/18/14 - Adjusted html5 text positioning and line spacing to more closely match PDF output. 8/18/14 - Discovered missing line from [drivers] section of uf90d.ini as shipped. This line is used by AFO pcl output. The line should read: pcl=ljet4,.25,.25,.25,.25 8/20/14 - Corrected a problem in Browse, where you could mark the document list but not unmark it. 8/21/14 - Fixed problem with design tool test print not remembering postscript and redirect checkbox settings. 8/30/14 - Added sorting to library categories when library tree views are created in the browser interface. A reload or clear cache is required. 8/30/14 - Added the library description to library selectors in the browser interface. A reload or clear cache is required. 9/4/14 - Added support for documented Windows client options -about and -config. 9/4/14 - Updated client to work correctly with a DOS-formatted uf90c.ini file when running on a Unix system. 9/5/14 - Updated Unix ufsetup.sh to correctly change ownership of the .ini files to the user running the unform server. 9/5/14 - Adjusted html5 larger text (>15 point) vertical position to more closely match PDF output positions. 9/6/14 - Modified uf90c.exe to correctly handle quoted command line options with special characters, and quoted values read from a -z/-zx file. 9/10/14 - Corrected a build problem with Image Manager that caused it to look for a file cswskax5.ocx, when it should have been looking for cswskax8. 9/10/14 - Reinstated default rows value based on a page command, if present. 9/10/14 - Corrected "ghost" OCR display data under some circumstances where some pending images had OCR data and some did not. 9.0.06 9/19/14 - Added a new uf.dsnrun code block variable that is true (1) if a job is being executed by a designer preview. 9/23/14 - Corrected a build problem of uf90cc.exe, the Windows console client, which also affected the uf90c.exe and the local client on Windows installations. 9/23/14 - Corrected a parse problem when using an unform command inside a code block, if that command ended with a quote. 9/25/14 - Dealing with ShellShock bash vulnerability: If you can't or choose not to patch your /bin/bash shell on a Unix-like system, the CGI script that runs behind the Apache server used by UnForm will be vulnerable to exploit. If this server is exposed to the public, you can make a simple change to the web/ufarc script to have it run under the Korn shell, which is an older Unix shell that does not have the bash vulnerability. If you don't have ksh, you can install it on your system using standard package management tools. Once you have it, simply change the #!/bin/sh line at the top of ufarc to #!/bin/ksh. 10/2/14 - Corrected text sample 'save' options to globally replace all , , and tags with correct control characters in saved data. 10/2/14 - Modified 'hide preview' option in designer to be on all preview mode menus, to allow hiding of any instance of a pdf file that might obscure other design tool elements. 10/2/14 - Added option memory to the design tool search box, so it saves selected options and search values across opens. 10/3/14 - Restored missing linked documents to 'related documents' list in the browser interface image viewer. 10/3/14 - Modified thumbnail production to create PNG format rather than GIF images, as we found Image Magick problems on some platforms resulting in poor quality thumbnail images. Note thumbnails are designed to be cached by browsers, so to see updated images, clear cache. 10/7/14 - Corrected a search performance issue if only a doc type is selected for criteria, where there would be extra unnecessary reads of the same doc type records. This did not result in extra records selected, only in extra reads of the library. 10/7/14 - Modified timing of image extraction during importing a library from v8 to v9, to avoid extra overhead if a duplicate sub ID is encountered. 10/8/14 - Performance optimizations for uf90c to reduce initial load time. Also added the -cmptrans option (and cmptrans=1 in uf90c.ini) to turn on compression, thereby avoiding compression overhead by default, which is preferred on local high-speed networks. 10/14/14 - Updated calendar behavior in browse mode to disable dates on which there are no entries for a given index. 10/14/14 - Corrected overlay positioning in html5 output to correctly place pdf page at 0,0 rather than within margins, matching positioning of an AFO overlay and more closely aligning with other drivers. 10/20/14 - Updated logic of daily Apache restart to prevent potential race conditions that resulted in Apache ignoring signals on some Ubuntu systems. 10/20/14 - Added a feature to manually stop, start, or restart the Apache httpd server while the UnForm server is running. This is documented in the Server Options page of the UnForm Command Line Options chapter. The control is through creation of one of three transient files in the UnForm server directory, httpd.stop, httpd.start, or httpd.restart. 10/20/14 - Corrected a problem in getdocidprop and putdocidprop functions under some circumstances where a user table file channel is closed and permission checks failed. 10/21/14 - Corrected a build problem related to tbarcode on 64-bit Linux. 10/22/14 - Corrected Linux 64-bit build, which incorrectly had a mismatched tbarcode executable and shared library. 9.0.07 10/24/14 - Added sequencing logic to prevent caching of design samples by the design tool, which prevented disk-based changes to samples from being picked up by the design tool. 10/29/14 - Corrected a browser interface problem when a document ID contained a % character. 11/4/14 - Corrected human-readable text lines for barcodes when the text contained spaces. 11/4/14 - Modified handling of null input to subjobs to make them more consistent with null input in the parent main job. Now subjobs with a -r option and empty input are treated like the main job, which allows processing of a page even if there is no input. 11/4/14 - An if expression outside of a code block and outside of 'if copy' blocks, would cause the enclosed commands to execute multiple times, rather than once for the 'page' level output. This was generally not visible, but the images command would produce duplicate attachments. 11/12/14 - Release job lock when running -arcimport, so archive conversions to 9.0 from previous releases do not occupy a print job slot. 11/12/14 - Correct error in uf90c if the -jobs option was used without a -o option to send output to a file. 11/13/14 - Enhanced library conversion to support the -arcdoctype and -arcdtm options to import ranges of documents, to allow concurrent imports of different portions of libraries. Also added logging to provide import status in the server.*.csv logs. See the 'Importing 7.x/8.0' page in the documentation, viewable here: http://unform.com/unform9/documentation/importing_7_x_8_0_libraries.htm 11/14/14 - Added design tool Edit menu option to turn off syntax highlighting. 11/14/14 - Removed modality from several design tool forms to enable access to the Hide PDF button, since PDF previews can obscure several popup forms when using the Adobe Acrobat plugin. 11/14/14 - Updated designer publish option to also perform a save to the .rud file, so both stay in sync on a publish. 9.0.08 11/18/14 - Corrected an obscure bug in the deliver command, if a tag used an expression, and that expression was the 29th expression found in the rule set during parsing, the tag would be skipped. 11/22/14 - Corrected html5 horizontal or vertical line positioning. 11/22/14 - Corrected design tool hang when it encounters a rule set with comments after the rule set header ([name] # comment). 11/24/14 - Corrected error 10 report in html5 output when an image command with a null-value expression was encountered. 11/24/14 - Corrected a design tool bug where publish would lose segments of mult-segmented file names. 12/3/14 - Added three features to the inifile object: alltext argument to the getsection$ method, to return all lines including comments and blank lines getname$(section$,value$) method to return the first name whose value matches the supplied value. getnames$() to return a LF-delimited list of names in a section. 12/4/14 - Corrected full-ascii code39 symbology output, to use the correct tbarcode type. 12/6/14 - Completed preliminary release of the Workflow configuration tool, which simplifies editing of the system workflow library and clones. This tool is available from the Admin menu of the browser interface. 12/8/14 - Corrected library recovery feature when running under Windows. 12/8/14 - Corrected an error 36 during library recovery when a library contains a historic delete subid transaction. 12/9/14 - Design tool test print now honors the force rule set option. 12/16/14 - Added support for a 'notls:' prefix on the mailcall server= line to disable the automatic STARTTLS invocation is a mail server advertises its support. This was added because it is possible that SSL libraries on the client or server might not work or be incompatible. 12/16/14 - Added support for UNC devices when doing passthru printing. 12/16/14 - Corrected async and rpq handling of error 998 responses from the server. Those error type should be retried indefinitely. 9.0.09 12/30/14 - Corrected an error 36 reported by the json object's fromini$ method. 1/2/15 - Added support for dtform(), which had failed to make into the initial 9.0 release. Note that there are changes required to any html forms used by dtform() in previous releases. Review the Desktop Forms chapter in the OTHER FEATURES, DESKTOP DELIVERY section of the manual before implementing existing forms in 9.0. 1/8/15 - Updated build to include ldap.ini.sds, and updated setup code to rename to ldap.ini if not found. Note that sites where LDAP has been tested will need to copy the non-[default] sections from ldap.ini.sds to their current ldap.ini file to make use of these changes. 1/8/15 - Corrected auto-length sensing for postnet, upc, and ean barcodes when using the default (tbarcode) barcode library. 1/8/15 - Corrected several web/en-us templates for issues related to special characters in document types, id's and subid's. 9.0.10 1/9/15 - Added a set of workflow deployment forms include files. 1/09/15 - (mje) Workflow 2.0.01 features added. 1/9/15 - Changed a function used by the inifile object to avoid Windows crashes when passing a long string to the object. Certain string patterns would cause Windows to crash during a file existence test. 1/20/15 - Modified emailform.html sample to post correctly with rest= and jobno= values that are not duplicated. 1/22/15 - Added support for PDF417 and QR 2D barcodes in the Image Manager. 9.0.10 2/5/15 - Corrected a security issue where a non-admin user could access the server manager. 2/5/15 - Updated auto ufarzon.dat import logic to avoid listener startup failure if an imported job name contained a slash character. 2/5/15 - removed a runtime activation file from the 32-bit Linux build, which would require a re-license whenever that version is updated. 2/11/15 - Updated Windows client to install and run properly on 32-bit Windows systems. One caveat is that on an older operating system, like Windows 2003, there was no "programdata" environment variable. As a result some configuration files will be placed in "\SDSI", so the installation should use the default (c:\sdsi\uf90\client) install path to ensure the \SDSI folder is created. 3/4/15 - Corrected a bug in the server manager configuration screen for default rule file; it updated the field rule_file rather than rulefile in the uf90d.ini file. 3/5/15 - Changed interpretation of a \- character sequence in a search from a range interpretation to a simple hyphen literal. 3/9/15 - Added WorkflowUser column to user export list. 3/9/15 - Fixed Group Access maintenance to not default the first library to read access. 3/9/15 - Honored enablefax=0 setting from uf90d.ini in the image Actions form, so that no fax panel is displayed. 3/9/15 - Added feature to Search, to allow searching of various subdoc properties in addition to searching subIDs. 3/9/15 - Changed REST call code to return an error message prefixed by a \x15 (NAK) character rather than an "!" character. The ! value could be confused with live data rather than an error. Browser cache must be cleared for this to work properly. Also, any custom REST consuming applications, outside the browser interface, will need to account for this change. 3/9/15 - Adjusted behavior of Browse when it encounters single-segment or null- mid-segment categories. Single segment categories now immediately go to a document listing. Formerly behavior was unpredictable. Categories with null mid-segments remain troublesome. If the only value at a certain level is null, then documents are displayed without access to later segments. If there are other non-null segments at the same level as the null segment, those additional non-null categories are selectable. See the new nulltospace option described below. 3/9/15 - Corrected a design tool error message when opening a file and selecting a directory, if there were duplicate paths to the same directory in the tree selection list. 3/10/15 - Added a new uf90d.ini [archive] section setting: nulltospace=0|1. If enabled, mid-category null segments are converted to a space value, enabling access via the browser interface and library object. 3/11/15 - Modified sample emailform.html and faxform.html to correctly handle dtform() commands when a session login is required first. 3/11/15 - Added a Cancel Preview option to the design tool File menu. This feature will cancel design tool tasks for the current session on the server. Also invoke this feature automatically when the design tool window is closed. 3/16/15 - (mje) Workflow version 2.0.02 features added: optional document center independent window behavior and related features. See "indepwin" series of inirule settings, including w9|html template mods, and mdf* forms changes. 9.0.11 3/23/15 - Add (back) web/en-us/icons/32/folder.png, which somehow went missing in the first 9.0.10 build. 3/27/15 - Corrected 00:00:00 time stamp on images added via the browser. 4/2/15 - Updated library and libraries objects to accomodate getDocProps functions by workflow users to workflow libraries. 4/2/15 - Corrected a potentially critical bug when creating an archive library "images" path for a new document. The paths are created using a sequence counter that is maintained with the library. If the sequence counter gets out of sync, so that a duplicate name would be produced, the system will either place the images in the system's default library, if it exists, or hang. It is unlikely it would be visible in the default library, but it will not be visible in the intended one. There is no indication that this bug has been encountered in the field, as it requires a previous file system problem to be encountered. In fact, we did not encounter it ourselves, but rather noticed the potential while working on another issue. However, due to the potential effect on data integrity, we recommend that all users who use 9.0 archiving update to this release. 9.0.12 4/6/15 - Modified parsing logic for conditional unform commands, outside of code blocks, to resolve constants in the command lines during the initial parse time, as required to handle const command timing. 4/10/15 - Reinstated unsecured access to -arcexists option, which was using default library access. 4/10/15 - Corrected marked image email/fax window management to use an independent window for status and log result status. The former design used a toolkit window that lost script access during window managment. Also corrected the email log response. 4/10/15 - Reverted image viewer email/fax response to be plain text rather than a table, as it makes copy/paste of the text much easier. 4/10/15 - Added support for -p win[:printer|default]" in the Windows uf90c client, as documented and supported by the 8.0 client. 4/10/15 - Updated Windows installer to automatically grant full access to the server's "temp" directory, enabling regular users to submit local jobs without manual permission work. The installation must be running as Administrator, as the documentation recommends, for this to be successful. 4/16/15 - Corrected error 26 when multiple circle commands with expressions in the radius or position values are used. 4/16/15 - Corrected an html5 rounded box drawing error when the lower-right corner was not specified as rounded. 4/28/15 - Set the design tool text sample pane to charset iso-8859-1, to match the standard character set of unform input streams. 4/29/15 - Modified pattern search for input rule sets to avoid conflict with specific pvx program structures. 4/29/15 - Updated 9.0 Image Manager to avoid file caching problems that would cause OCR from PDF text from multi-file imports to be mixed up. 4/29/15 - Found that MuPDF was changed after their version 1.4 and is now incompatible with IM pdf text extraction. You can either install the legacy 1.4 version, or use a current Ghostscript, in the Image Manager. 5/7/15 - Corrected a potential deadlock updating library recover files. 5/14/15 - Removed stray message box with "1" when saving an external user record in the admin browser interface. 5/14/15 - Adjusted access header for external users to be more clear that external users do not obtain default access to a library. Default access is used only for internal users. 5/14/15 - Corrected a hang when a -gb option is supplied and no rule set is detected. 9.0.13 5/15/15 - Corrected search range issues. 5/18/15 - Corrected event timing issues when browsing categories or keywords that pull large data sets from the server, sometimes resulting in overlapping results due to multiple grid events firing too close together. 5/18/15 - Enabled manual edit of a document date field. 5/29/15 - Corrected external user library access issues on Windows servers. 5/29/15 - Added an optional argument to the library object putdoc method, enabling retension of the date/time updated value. Also updated the library import/conversion from previous versions to use this and retain the date/time updated value when importing documents. 5/29/15 - Changed internal execution of uf90c in the rpq sweeper to use 127.0.0.1 rather than localhost as the server, to avoid issues with localhost going to the ipv6 address rather than ipv4. 6/5/15 - Updated mailcall for better support of STARTTLS mail servers. 6/8/15 - Corrected a Windows error message box when running Active Directory sync in user maintenance on a Windows server. 6/9/15 - Added support for user names in pre-Windows 2000 format when synchronizing users with an Active Directory server. A new field was added to the ldap.ini file, set as dcuid=1 to enable the feature. This will cause user logins to then be prefixed with the first domain component and a backslash, such as Acme\Sally. An example of this is found in the [activedirectory2] section of ldap.ini.sds (which is renamed to ldap.ini in an initial install). 6/9/15 - Added uf.afo2 variable to indicate if the -afo2 option was used. 6/10/15 - Adjusted Active Directory support so if dcuid=1 in the ldap.ini section, the domain component of the admin login is used during the sync process. 6/10/15 - Added support for URL-encoding characters in the first segment of a category index in the browse window of the archive interface. 9.0.14 6/11/15 - Updated client to remove local *.cmd file when submitting jobs in -async mode. 6/11/15 - Updated Windows Support Server to stop more consistently when the parent UnForm server stopped. 6/16/15 - Updated Image Manager to support LDAP/Active Directory login authentication. 6/17/15 - Addressed a permission problem when using localhost on Windows, and having an input file fail to copy the submission file correctly. 6/17/15 - Updated the browse calendar settings to work consistenly across browsers and when there were month gaps with active documents. 6/18/15 - Reinstated ability of users with write access to a library to change the ID value of a document or image. This was inadvertently lost in 9.0 due to internal changes in library management. 6/22/15 - Correction to async subjob execution on Windows, where if a non-console Ghostscript was configured (i.e. gswin64.exe vs gswin64c.exe), an async subjob could hang due to a hung message window from GhostScript. 6/25/15 - Added a clarifying error message when an Image Magick conversion fails, which until this change could result in a cryptic error 2 message. 6/25/15 - Corrected an error in the json object's fromcsv$ method, which produced incorrectly formatted JSON. 7/9/15 - Corrected a Browse library navigation issue when a category segment contained a # character. 7/9/15 - Added automatic suppression of STARTTLS invocation when connecting to a mail server via SMTPS. The two modes are incompatible, but some servers appear to advertise STARTTLS even on their SMTPS port. 7/13/15 - Corrected a problem when using -arcput to upload non-PDF files, where the file type would be identified as "in" rather than the correct type. 7/13/15 - Added an ability for an administrator to update an image record's type field. 7/14/15 - Modified inifile object to ensure a linefeed is present when the putsection method appends a new section to an ini file or string. 7/19/15 - Updated rental license test to avoid startup hangs when the system could not reach the internet. 9.0.15 7/21/15 - Corrected a job number search problem in the log analyzer in the browser-based server manager. 7/21/15 - Enabled deletion of library records copied from older systems that do not have a drive letter forced by the server in their full path. 7/24/15 - Added logic to force character width based on a generic Time Roman font when Ghostscript AFO can't determine the font and character width. 7/28/15 - Corrected an incorrect assignment of a "pdf" type to the @text image created by an archive command. 7/29/15 - Added ability of admin using library maintenance to access a Windows library name that does not start with a drive letter. Such libraries are not created by UnForm 9.0, but could be copied from a migration from a prior release. 7/31/15 - Corrected sorting of library categories in library tree lists to be compatible with IE. 8/3/15 - Corrected an empty doc type column in the scan log display of the server manager. 8/9/15 - Corrected ability to search for "?" in the design tool. It was not being escaped as a regular expression character. 8/9/15 - Added an international character table to the design tool, available from the Edit menu. The table displays characters 128-255 found in the default ISO-8859-1 character set. You can click the character or the values to insert characters into the edit panel, generally inside a quoted text value. 8/10/15 - Corrected a design tool bug that resulted from mis-communication with the server of the default ISO-8859-1 character set for the editor. Unfortunately, any rule file with international characters, such as accented letters, in text strings would get all such characters converted to either 0xfffd or 0xff sequences, in some cases doubled with every load/save sequence. The patch corrects the character set issue for but cannot fix existing rule files that have been damaged, since the browser's conversion to Unicode replaced all such characters with the same sequences. Included with the patch is logic to modify rule files that contain such long sequences of repeating characters with double question marks, making it easier to locate the text strings that were damaged. The patch looks for any occurance of 8 or more FFFD sequences and 8 or more FF sequences by default, but this can be adjusted by adding a [designer] section to the uf90d.ini file and placing fffd=n and ff=n settings in there. The value of n represents the total sequence length, so a value of 20 is required to locate 10 or more fffd sequences. 9.0.16 8/13/15 - Corrected an error 81 in the server manager config screen. 8/13/15 - Added two new parameters to uf90d.ini [defaults]: rpqinterval=seconds to set how often the rpq sweeper fires (default=5) rpqmaxjobs=count to set how many jobs can get released by the sweeper in one run. Use these values to control -async and tcp/ip submitted jobs to avoid excess system resource drain. See Configuration in the manual for more details. 8/18/15 - Corrected support for direct category URL structures that include URL-encoded data in the "l1" field. 8/24/15 - Modified the design tool to optimize rule file loading and avoid a stack overflow when a large number of rule sets (i.e. 160+) are in a rule file. 8/24/15 - Modified the LDAP/Active Directory sync process to retain non-LDAP groups that a user has been assigned to. 9.0.17 8/26/15 - Corrected a paste interpretation problem in the design tool, when the paste included rule set headers. 8/28/15 - Modified pdfpages() function to return 0 if an invalid file name is provided. It was returning 1. 8/31/15 - Corrected the server manager default rule file setting feature, which was writing an incorrect rule_file=value in uf90d.ini, rather than rulefile=value. 9/1/15 - Corrected Browse display of null library names when there were null library alias entries with line breaks. 9/8/15 - Corrected a problem with msfax(), where the support server would log a connection, but the submission would time out rather than complete. 9/15/15 - Corrected design tool test print interpretation of Disable output redirects, so that if unchecked, output redirects are honored. An output redirect is an output command or a setting of output$ in the rule set. 10/5/15 - Corrected problem with pcl overlay command that did not include a resolution argument. 10/6/15 - Added auto-configure of Ghostscript, if no gs= line is active in the [drivers] section of uf90d.ini. Also added check for ghostscript support for eps driver, which can be one of two devices: epswrite or eps2write. Update will auto-check for which ghostscript reports and sets the eps= line of the [drivers] section accordingly. These steps are taken when the server is started. 10/6/15 - Added auto-configure of ImageMagick, if no converter= line is active in the [images] section of uf90d.ini. This occurs when the server is started. 10/6/15 - Added code to force the console version of ghostscript on Windows, i.e. gswin64c.exe, if the non-console (gswin64.exe) is configured, in order to prevent reported problems encountered when running the non-console version. 10/7/15 - Updated Image Manager to avoid random file conflict errors when multiple terminal server users run the same job. 10/9/15 - Resolved a Browse window timing issue when a category index contained only a top-level segment, which could result in that document set loading automatically even if a pre-selection url was used to select a different index order. 10/15/15 - Added a new property and method to the http object, to allow setting of custom headers when interacting with web services. The property is customheaders$, the method is addheader(name$,value$). 10/15/15 - Modified desktop delivery browser to improve the way it deals with an expired session. Previously, it would silently go dormant, requiring a manual reload to restart it. The new behavior alerts the user and then reloads the page. If the page was entered via a login form, then the browser will generally ask for confirmation to reload the page. 9.0.18 10/19/15 - Corrected an error in the http object when attaching files to a post submission. 10/21/15 - Corrected a bug in barcode symbology 455, which issued an error 41. 10/30/15 - Added the formatnumbers() function, to apply a format mask to lines of numeric values in a string, useful when printing rows of numbers with a text command. 10/31/15 - Added resolveexpr() function, which scans a string for {xx} sequences, and replaces them with an evaluation of a string expression. For example, if a$="123", resolveexpr("a={a$}") would return a=123. 11/5/15 - Force test execution of Windows ghostscript to be the console version, even if the win32 version is configured, when testing for which active eps driver is available at startup. 11/9/15 - Corrected a field naming error in the http object when adding file fields. 11/16/16 - Added support for image-level custom web forms, using a forms.ini tag format of [library|doctype|subid], where subID can be * for any subid. [demo_sales|Quotation|*] would present web forms when any subid of any Quotation document is viewed. [demo_sales|Quotation|@unform] would present web forms with the @unform subid was viewed. 11/17/15 - Updated Image Manager to address lookup job column problems with jobs stored on the server. 11/20/15 - Adjusted parsing of email() and certain other functions to avoid overlap with user-defined functions or method calls that end with the same name. 12/4/15 - Modified uf9ptr to find both .unf and .UNF files. 12/15/15 - Workflow version 3.0 (beta) features and enhancement files added (mje). 12/16/15 - Corrected error 47 in ufrule when parsing an exec() statement for copy 17. 9.0.20 12/18/15 - Corrected constant assignments in the workflow rule file web/en-us/mdfv3z9.rul referencing a development version of the rule file name. 12/29/15 - Corrected a search problem with entity ID criteria, where the match was being performed in a case-insensitive manner. Entity ID's are case sensitive. 12/30/15 - Corrected external user category builds for their library views. Note that as library views are build by session, the user's session will have to expire before a new view is created with the categories defined. 1/4/16 - Modified library recovery to enable handling of both encrypted and unencrypted records, to support cases where the libssl/libcrypto share libraries were not available at the time recover transactions were written. 1/9/16 - Added a new method to the system object, newfile$(initname$[,pad]), designed to create a unique file in a path, adding a sequencer as needed. See the manual for more details. 1/13/16 - Added a retain optional argument to the system object's tempfile() and tempfile$() methods, to prevent automatic removal of the work file at the end of a job. i 1/14/16 - Added the ifn() and ifs() functions to return one of two numeric or string values, respectively, depending on boolean argument. These are similar to the IIF or IFF "immediate IF" functions of other languages, but honors the string/numeric restrictions of the UnForm runtime. 1/20/16 - Modified handling of 'if expression' outside of a code block, so that in specific documented situations it behaves like previous releases. Specifically, if the expression contains prm() or gbl() functions, or a uf.xxx value, it is resolved at parse time. Otherwise, it is resolved at runtime to allow dynamic control over output statements such as text, box, image, and so on. 2/4/16 - Completed certified DocuSign integration, to allow DocuSign signature requests and logging via the archive browser interface or the deliver command. Full documentation is provided in the manual. 2/4/16 - Reintroduced support for the title= and logo= settings in the uf90d.ini [archive] section. These are used for setting the browser title and icon for the browser interface. This enables branding of an installation with a user's logo and name. 2/4/16 - Added the logged in user ID to the Logout menu option, to provide visibility to the active user. 2/4/16 - Corrected a hang condition when a custom log file (log(msg,file)) is specified that is invalid, so it can't be created, and the same name is used in a subjob and main job. The main job would block the subjob due to a failure to release a lock when the file creation error occurred. 2/8/16 - Added an 'IDs starting with' field to the Browse by Type option in the archive browser interface. Enter a value in this field to seed the document ID's that are displayed in the document grid, so only those starting with the entered value are displayed. 2/12/16 - Corrected a design tool problem with a merge ruleset link, if the merge had more than one tab or space before it. 9.0.21 3/3/16 - Corrected checksum printing for 3of9, 2of5, and codabar barcodes. 3/3/16 - Refactor xmlreader object for better handling of deeply nested, duplicate named elements, and for performance improvements. Also added two new methods: parseelement and parseattribute, to support element management in addition to navigation features. 3/14/16 - Workflow version 3.0.0b5 (beta) features and enhancement file updates added (mje).. mdfv3z9.rul, mdfv3syswf.rul, mdf*.html, wffunc.pvc 3/28/16 - Provide more intuitive message when a design tool preview executes but does not find a detected rule set. 4/7/16 - Modified ghostscript conversions to pdf format so avoid a new Ghostscript error related to text alpha bits. This had resulted in multipage pdf attachments, such as with the images command, to only pick up the first page when used with Ghostscript 9.18 and higher. 4/13/16 - Set default From address in marked images to the address of the logged in user's email record address. 4/14/16 - Corrected an HTML5 encoding error with multiline text that contained embedded leading spaces. 4/24/16 - Adjusted timing of saving and updating the rule file's name in the design tool status bar to correct for the possibility of a javascript timing issue causing the wrong rule file name to be active when selecting a new rule file from the File, Recents menu, and choosing to save the active rule file when prompted. 9.0.22 4/25/16 - Added the new linecalc() function to perform arithmetic or string concatenation operations on pairs of delimited strings. Use this, for example, to calculate a series of line amounts from a list of quantity and price values, or to combine descriptions from two columns into one. 5/3/16 - Changed a viewer preference PDF property to re-enable a default scrollbar in Acrobat when viewing an UnForm produced PDF. 5/4/16 - Enhanced the design tool, adding an "Alternate Rule File" option to the File, Options menu. The purpose of this feature is to append the named rule file to the preview/testprint rule file generated on the server. This is effectively the same as a -f "main.rul;alternate.rul" syntax of the uf90c command line. 5/17/16 - Fixed an address book editing issue, when the Doc Type field was empty. The edit panel would not show the selected record. 5/23/16 - Fixed -arckeywords, -arclinks, and -arcsubtitle command line options. 5/25/16 - Added the -noirs option to suppress possible interpretation of an inline rule set if an input file contains the header structure that would otherwise trigger it. 5/27/16 - Fixed support for \n in the -arcnotes command line option, along with an escaped (\\) backslash to force literal interpretation of the backslash. 5/31/16 - Added support to an escaped (\=) in the rule file parser so that an expression that contains an equal sign can be used. This solves a parsing issue where all non-quoted "=" characters (outside of code blocks) are converted to spaces to enable the common, but syntactically incorrect, use of = in non-code block lines (i.e. cols=80 rather than cols 80). In cases where an expression requires an equal sign, you can now use \=. For example: text 10,10,{ifs(doctype$\="QUOTE","QUOTE","ORDER")}. 6/1/16 - Addressed a case where an EPS file contains a bounding box with -0 as coordinates, which could result in --0 in the image attached to the job, causing a printer error. 6/11/16 - Modfied logic to determine if ghostscript alphabits option should be used to reference only raster devices, to adjust to a change in gs 9.19 that made such an option illegal on non-raster devices. 6/14/16 - Updated ghostscript-based printing for Windows with two changes. 1) Corrected support for direct UNC output devices (-o \\server\sharename). 2) Added support for windev: output devices, which are translated to the ghostscript convention of %printer%. This translation is internal, so you can now specify the UnForm syntax "windev:" and when going to Ghostscript output, the name structure will be converted to the one supported by ghostscript. This is useful in conjunction with a new line that can be added to [drivers] in uf90d.ini: mswin=mswinpr2,0,300 This enables -p mswin -o "windev:printer name", and ghostscript will use Windows GDI printing to produce the job, rather than a raw print file. 6/14/16 - Added two fields to user records: ext_username and ext_password, both maintained in the admin browser interface for internal users. These fields are for future expansion and custom needs when a login to an external service is required and should be related to a specific UnForm user. 6/24/16 - Corrected winprt: color printing, which was getting a bad device error when running ghostscript to convert to a color bmp interim format. 7/1/16 - Modified Windows client to use a local Perl interpreter, when available, to improve launch performance. The uf90c.pl client is now included with the Windows installer, and if that and a perl.exe is available, the client will be launched as a perl script, which reduces the overhead of the uf90cc.exe program, which is a compiled program with a bundled Perl interpreter. The system looks for Perl in c:perl\bin or c:\perl64\bin. These are default install paths for ActiveState's Windows Perl. You can optionally create a manual entry in the local INI file (as displayed in a uf90c -v option), in the [defaults] section, perl=\full\path\to\perl.exe. 7/6/16 - Workflow version 3.0.0b6 (beta) features and enhancement file updates added (mje).. wffunc.pvc, mdfv3z9.rul, various mdf*.html 9.0.23 7/19/16 - Corrected a Windows uf90c.exe problem related to the new feature support for an external perl interpreter, which could result in 0 byte output to the main -o file, and a different file being generated. 7/19/16 - Added support for -nn when a rule set is specified, so that an empty input will still produce empty output, even though normally a rule set would still be invoked to produce a page of formatted output. 7/21/16 - Corrected a logage read problem in the purge routines for delivery logs, resulting in purging on the default 30 day cycle even if logage was set to a different value. 7/21/16 - Corrected a special case problem where outside a code block there were two sequential conditions, the first of which has a single command, and both conditions are true, the first command of the second condition would not execute. 7/29/16 - Added optimizations to rule file parsing engine to improve parse speed when lots of constants are used. 8/1/16 - Workflow version 3.0.0b7 (beta) - updates to proxy handling logic for new org-based workflows (mje).. wffunc.pvc, mdfv3z9.rul 8/7/16 - Added additional Image Manager history logging, for upload processing, where each time a batch of documents are uploading, copies of the uploading files, including downscaling and PDF conversion files, are copied to a folder in the History directory, by date and Upload-. In addition to file copies, a log is maintained of each message that displays in the uploading window and status column of the Pending list. This process is triggered automatically if 'history days' are non-0 in the Image Manager configuration. 8/10/16 - Corrected a design tool problem where mnemonic tags like and are not converted to their raw equivalents when previewing after the sample content is edited. 8/15/16 - Updated postnet barcodes to automatically strip "-" characters to ensure this common zip+4 format did not report an invalid number of characters. 8/15/16 - Updated barcode handling to report all barcode errors without exiting barcode generation after the first error. 8/18/16 - Corrected a false error report that could occur during scan uploads, where one correct error could result in subsequent uploads during the session to report the same error. 8/21/16 - Corrected a file handle management problem when many image manager uploads are processed in a single session. 8/30/16 - Modified handling of license server connection errors when starting UnForm with a SaaS license. During normal running, such an error would be logged, but the server would continue to run until an actual expiration was reached. This change enables a server to start regardless of license server access, unless the license previously active has actually expired. 9.0.24 9/13/16 - Optimized browse window loading of top level category selector pages, to improve load time. 9/16/16 - Corrected a problem resolving constants with embedded quotes that are later used in expressions. Corrects a problem introduced with the new optimized rule file parser. 9/23/16 - Corrected a syntax error if an exec() function is used following a semicolon without any whitespace ahead of it. 10/12/16 - Corrected a search age purge routine that was only purging records from the first user it found. 10/12/16 - Corrected offsets encountered in AFO jobs where pages must be scaled to adjust positions when overlaying different page sizes. 10/12/16 - Added support for MuPDF's mutool program in place of Ghostscript for text extraction. To enable this, you must set mutool=path in uf90d.ini, in the [drivers] section. If this value is defined, it will be used instead of Ghostscript for AFO text extraction. 10/12/16 - Enabled support for ghostscript's eps2write device when using AFO postscript output. It was formerly hardcoded to epswrite, which fails on recent ghostscript versions. UnForm now looks at the eps= line in [drivers] in uf90d.ini for the proper eps[2]write option. 10/14/16 - Enhanced SSL configuration by adding support for Apache's SSLCertificateKeyFile and SSLCertificateChainFile directives, with settings available in the uf90d.ini [apache] section (sslkey= and sslchain=). Also removed SSLv1-v3 options, and added high cipher suite settings to ensure higher security levels. Some VERY old browsers may run into problems, but this is now the standard for HTTPS. 10/14/16 - Added Server Manager configuration fields for the SSL certificate, chain file, and key file, with browse buttons. Also added web extension printer input on the External Tools tab, to allow setting up named printer configuration for the upcoming SDSI Web Extension. 10/18/16 - Corrected ability of external users to change their password. 10/18/16 - Added support for scaling AFO pages both during the initial input parse and with a new code block function. The use case this solves is when PDF/Postscript is A4 or Letter size, and the desired output is the Letter or A4. It applies to any size, but those are the two most common paper sizes. Job-wide is controlled by -fitpage/-nofitpage options on the command line, or by a fitpage=0|1 setting in the [defaults] section of uf90d.ini. When set, UnForm will ask Ghostscript to scale all pages based on -paper (default=letter). The function is fitpage(pagenum,"size"[,"charset"]), where the selected page overlay and text base is re-scaled to the specified page size. The size can be any standard paper size ([paper] section in ufparam.txt) or a custom size specified as WxH for width and height in inches. 10/18/16 - Changed PDF title for passthru jobs to "Not Detected", rather than 9 \xFF characters, which is the internal value used. 10/21/16 - Modified async deliver to not invoke retry logic when an invalid To: or From: address is encountered, as these are always a permanent errors. 10/21/16 - Added a queuefile= tag to the deliver log when async delivery is performed. This file indicates which *.spl file is being retried, making it easier to perform manual maintenance on the directory. 10/21/16 - Added a new [default] section value to deliver.ini, retryage=days. If present, this value is used for purging of the deliver spool files, instead of the former logage value. 10/21/16 - Added support for MuPDF's mutool/mutool.exe program for text extraction during AFO jobs. We have found that some PDF files that are not readable by Ghostscript can be parsed by mutool. This can be configured in the Server Manager Configuration option, External Tools tab, or manually in the [drivers] section of uf90d.ini, with a mutool=/path/to/executable line. You can download Windows versions of this from mupdf.com, and we plan to add a precompiled Linux download to the unform.com website. Or you can download the Linux source and follow their build instructions. 11/5/16 - Added -noafo2 command line option to turn off afo2 word parsing of AFO jobs if afo2=1 is set as the default in uf90d.ini. 11/16/16 - Added new options to the deliver command, with three reserved tags: ufnotify, ufnotifycc, and ufnotifyon. If set, these cause immediate notification of deliver command submissions whose status matches one of the values listed in ufnotifyon (default=err). For more details, see the deliver command in the manual. 9.0.25 11/17/16 - Optimized internal generation of user-defined functions in code blocks. These are lines from 'def fnxx' through 'end def', or its synonyms 'enddef' and 'fnend'. 12/6/16 - Corrected an error 88 in the textheight() function when using Unicode text with a TrueType font. 12/7/16 - Corrected a build problem related to the Windows client and using LDAP/ActivedDirectory syncing. 12/8/16 - Optimized the gtextitem() function to improve performance when looping through large word sets. 12/10/16 - Added site code feature to support upcoming SDSI web extension. 12/15/16 - Restored error response when trying to write a document type or ID that exceeds 20 characters, the maximum index length for those fields. Added ability to access document ID's longer 20 if they had previously been stored. 9.0.26 12/20/16 - Added automatic document listing when passing a multi-level category url to the archive Browse window. 12/29/16 - Added function to client and server to apply groups of settings with one socket transaction, to improve performance, especially on Windows. This change will take effect once the client and server have both been updated. A server update will automatically update the local client, so a specific client install is only required if you use standalone clients. 1/26/17 - Ensured that a javascript command witn an empty expression would not result in an empty javascript tag in pdf output. 2/1/17 - Added additional test for async delivery errors, so that if the mail server responds with a status code of 500-509, it is considered a permanent error and retries will not be attempted. This covers such problems as invalid addresses, incompatible mail servers, or bad domain names. 2/6/17 - Added a jsencode$(str$) method to the json object, designed to convert a string to a safe backslash-encoded value for JSON parsing. 2/19/17 - Modified -page and -rows command line handling to ensure they are used when generating non-detected output when a specific print format is also specified with -p. 3/6/17 - Corrected a design tool bug when moving rule sets in the rule set selection window. 3/13/17 - Updated the Windows installation to use .NET 4.5 rather than the older .NET 3.5, which required installs on most newer Windows systems to install the older .NET runtime environment. Since .NET 4 is standard on all 2008+ systems, we chose to update to this release which will make the install easier for the majority of users. 3/13/17 - Demo activations no longer require nor allow manual input. Both the Windows manager and license.sh have been updated to activate the demo locally rather than obtaining keys from the license server. 3/13/17 - This version is compatible with version 2 of the SDSI Web Extension. 3/21/17 - Corrected Truetype font access to unicode characters in specific ranges. 3/22/17 - Corrected auto-keyword generation to honor the nonchars setting in uf90d.ini. 3/22/17 - Added the new gtextwords() and gtextwordsexec() functions to assist in locating word data in AFO jobs. 3/22/17 - Modified thumbnail generation to not specify a font when generating the thumbnail for an unknown file type. Image Magick could hang if the font was not available on the local system. 3/23/17 - Modified all internal links to be relative for the browser interface, allowing external proxying to work properly. 3/24/17 - Added Workflow version 3.1 rule files and web forms to the web-enus and web-enus/forms folders. Workflow version 3.1 migrates all workflow functionality into the standard 9.0 DHtmlX toolkit-provided interface. 9.0.27 4/1/17 - Corrected a Windows build problem that improperly activated the demo mode so that some functions returned an error 99 (feature not supported). 4/5/17 - Changed subjobs to run using the uf90drun.ini file on Windows. They were running under the older runtime.ini file, which could cause conflicts with competing pxplus applications using specific environment variables. 4/7/17 - Recompiled windows .NET-base components to .NET 4 to maintain compatibility with Windows 2003. Windows 2008+ remains the recommended Windows version for UnForm 9. 4/7/17 - Modified behavior of Image Manager grid edits to retain the row and column position rather than be based on the ocr word correction method. 4/7/17 - Corrected a design tool licensing bug. Some users were able to use the design tool without an activation key enabling it. This patch resolves this and will require that a user purchase the design tool within 30 days of first use after the unform server has been activated. 4/7/17 - Corrected a server manager problem where browse buttons for looking up certificate files and external tools would return a url text fragment rather than the file selector box. 4/11/17 - Refactored ufarc.exe for Windows 2003 to avoid hangs due to a .NET 4 bug on 2003. 4/12/17 - Another quirk fixed related to .NET 4, where large rule files would not consistently be uploaded to the server during design tool previews. 5/11/17 - Modified an internal block size setting on the main listener socket to reduce overhead, resulting in improved performance on Windows servers. 5/24/17 - Corrected an Image Manager problem with grid zones on pages greater than 9. 5/24/17 - Added support for mutool.exe as the MuPDF text extraction tool in Image Manager. 9.0.28 6/22/17 - Updated async deliver logic to handle multiple attachments generated by the combine flag. 6/22/17 - Added logic to prevent an error 12 at 4380 in ufcgiuf.pv in cases where the system could recycle process ID numbers faster than files were purged from the temp/tmp directory. 7/25/17 - Workflow version 3.1.03 updates to rule files, object, and the ICE system-wf library, and includes addition of "OCR/XML/EDI" batch support to system-wf library which previously resided in a different ICE system library, for ease of access, configuration and use. 8/8/17 - Corrected an Image Manager problem with grid zones and detection logic, where the first job tested for detection created the initial grid zone data. 8/25/17 - Added the txtJobName variable to Image Manger job definitions. 9/8/17 - Corrected a bug resolving attach file name expressions in pcl output. 9.0.29 9/18/17 - Workflow 3.1.04 updates to the mdfv3z9.rul file to support new features related to work on image manager OXE job definitions (Ocr/Xml/Edi Apps using grid zones). 10/4/17 - Corrected endless loop bug in temp/tmp work file creation during custom web form posts or equivalent ajax posts from web browsers or the image manager. The bug could be encountered when the purge time for the temp/tmp directory is long enough to allow recycling of process ID values by the operating system, so the possibility of a duplicate PID work file existed. 10/4/17 - Corrected the library object's rangebytypeupdated and rangebyupdated functions to return the updated date rather than original date, to match the documentation and intent of those functions. 10/25/17 - Modified image manager to not reload a gridzone from scratch after an auto-detect job run completes. 11/03/17 - Workflow 3.1.05 updates, wffunc.pvc, mdfv3z9.rul, ufrest.ini, and ICE system-wf. 9.0.30 11/17/17 - Corrected a code generation issue when single-line functions were present in a code block, resulting in subsequent lines not having full error handling logic to trap errors. The untrapped errors would become job-fatal errors when normally they are just warning errors. 11/14/17 - Modified image manager timing of a grid initialization from ocr data to be between the detect and assignment phases of job processing. 12/1/17 - Completed deprecation of the Docusign integration, removing references from the browser interface and documentation. 9.0.31 12/21/17 - Added -gamma %g to the bmp8 and bmp24 lines of uf90d.ini in order to support the documented ,gamma n option in the image command. Existing installed can add this option manually, as uf90d.ini is not overwritten during an update. The correct syntax can be found in the uf90d.ini.sds file, which is overwritten by updates. 12/31/17 - Corrected a parsing error in uf90c that allowed an unfulfilled argument option to impact later options. For example, a bare -o following -f rulefile could result in a mis-interpretation of the rule file name. 1/10/18 - Added pathing code to ensure ghostscript executions for the overlay command and other purposes can find a file that would be found via UnForm's normal path searching but not via an o/s command like ghostscript. This enables non-full paths to be used for pdf files handled by ghostscript. 1/19/18 - Corrected an error 47 when using the set command with a column valut of less than 1. The new behavior is to set the minimum column to 1. 1/19/18 - Corrected an async deliver error if the deliver log file is in use by another process on Windows, which would cause repeated delivers to occur until the log was available. 1/25/18 - Modified behavior of the portal page when opening the archive browser interface, so that the same window will be used each time. Also added a button to enable manually starting it in a separate window/tab to allow multiple views. Note that multiple windows/tabs will share a session and several user-specific settings, such as open windows, will be updated by all the tabs as they are used. 1/25/18 - Added a new feature to the UnForm client, uf90c/uf90cc, to allow direct writing to the rpq folder for async printing. For this to work, use the new -asyncrpq "path-to-rpq" option, and make sure the server being used is called 'localhost'. Use of this option also implicitly turns on the -async option. 1/26/18 - Added a %k substitution tag to the -o filename argument, replaced by the current millisecond 000-999. This may be used in conjuction with other date and time tags to gain more precision or to avoid name conflicts. 1/26/18 - Added the same tag set, with a @ rather than % prefix, to the log file name used by various email functions, including deliver, the email() function, and the email command. It does not apply to direct calls to mailcall, however. The tags are documented with the deliver command. 1/26/18 - Changed execution of ImageMagick on Windows to use COMSPEC command prompt execution, after reports that some systems failed to execute some versions of Magick. 2/1/18 - Restored demo mode watermark, which was inadvertently lost in 9.0. 9.0.32 2/12/18 - Added tzc and tz substitution tags to the date object's format$ method, which are replaced with the timezone offset from UTC in +/-HH:MM or +/-HHMM values, respectively. Added iso and isodtm mnemonic formats to support UTC date and date/time in ISO 8601 formats. 2/13/18 - Modified behavior of the linecalc() function to ignore rows that both contain null, to avoid creating artificial "0" values when columns contain empty lines. The original behavior is supported with the addition of a 'allownull' boolean as the 5th argument. 2/22/18 - Enabled library alias searching on any error other than a locked library. The original behavior was to only search aliases if the error reported was a 'file not found', but other errors, such as invalid characters, could bypass that and skip alias searches. 2/27/18 - Updated Image Manager to enable the RunRuleSet function with a https UnForm web server. 3/29/18 - Corrected limitation that didn't display locked libraries in the library maintenance list. 3/30/18 - Added feature to Image Manager command line -import option. If specified as -import "pending:name1;name2...", it will process the named items from the Pending list that already exists. The names must be in the format xxxx-yyyyy.ext, matching the names in the Source column of the pending list. Multiple names can be specified, separated with semicolons. Note that the whole option should be quoted if it contains any semicolons. 4/4/18 - Corrected an issue of replacing = with \= in text command output when a translation file was in use and a text value was not supposed to be translated. 4/14/18 - Modifed pipe output on Linux to be fully binary, as it was discovered that an extra linefeed was inserted at each binary fragment write, which could cause a page eject if enough fragments were added during page initialization. This was reported when using a TrueType font for pcl output. 9.0.33 4/17/18 - Restored correct handling of -o /dev/null output on Unix. 4/27/18 - workflow rule file mdfv3z9-3106B.rul updated to fix issue where approver agents without library access needed admin privileges for multiview images to be viewed (mje). 5/29/18 - Corrected an error 17 that could occur when printing to tcp devices. 6/7/18 - Added a connection: close header to cgi responses to post requests, to work around an Apache problem when multiple cgi posts occurred within the configured keepalive setting. 6/7/18 - Added file pre-cleanup code in async deliver to avoid issues where the deliver sweep process could combine like-named files incorrectly. 9.0.34 8/2/18 - Corrected behavior of the sqlexecute() function so that if the errmsg$ argument is supplied, but no result$ argument, it will still return 0 or 1 depending on success or failure of the command execution. Instead, it was returning the number of rows the fetch would have given had the result$ argument been supplied. 8/22/18 - Corrected a textheight calculation when wrapping and lineheight were used. 8/24/18 - Added brackets around address book-pasted email addresses when the entry included a name and email. 8/29/18 - Corrected a problem with Zebra label output, where a justify option and cols setting would carry over to subsequent text commands. 9/7/18 - Enabled PDF redirection to a tcp: output device. 10/16/18 - Corrected a problem using an expression for an image link in the html5 driver. 10/22/18 - Corrected a build problem where the tbarcode toolkit was not installed. 10/25/18 - Removed $00$ from whitespace list in pdfreader object, as that was causing errors on some Windows systems. 9.0.35 11/12/18 - Updated Image Manager to not get a runtime error when the image print option is selected and then canceled. 11/12/18 - Updated deliver despool to only allow one task at a time to run, to prevent system gridlock when too many ufdlvrq tasks are launched. 9.0.36 11/28/18 - Corrected a reported error 1 at line 840. To complete this patch, after installing this version, stop the unform server, remove the uf90dlck.dat file, and restart the server. This file is in /tmp on Linux/Unix, and in c:\programdata\sdsi on Windows. 1/28/19 - Added feature to the document and image view pages, when viewed directly from a url (has buttons to show the full menu). When the full menu is opened, the document or image being viewed is automatically opened. 2/28/19 - Correct default truncate option on PDF417 barcodes. 3/4/19 - Modified jobstore() to honor updates to the page length during a putpage function. 3/18/19 - Modified ImageMagick conversion configuration line in uf100d.ini to account for a bug in Magick that occurs in version 6.7.8-9 2019-02-01. This version comes with an update to a common version of Redhat or CentOS Linux. The change is to the bmp1= line in the [images] section of uf90d.ini. bmp1="%i" -compress None -density %dx%d -units PixelsPerInch -filter Box -resize %xx%y -rotate %r -type grayscale -threshold 50% -colors 2 -depth 1 "BMP3:%o" >/dev/null 2>&1 Note the above two lines should be all one line in the file. In existing installations, uf90d.ini is not replaced, so this change must be made manually. Optionally copy and paste the line from uf90d.ini.sds. 4/5/19 - Correct a rare problem in deliver command expression parsing that could result in unexpected values in deliver tag values. 6/4/19 - Corrected a problem with very long email login names or passwords. 10/15/19 - Corrected a file handle leak in the pcl driver when using an image command with an invalid non-pcl file name. 3/17/20 - Back-ported support for CirrusPrint output devices, by using -o or output$ settings in the format cp:locid:devid for a CirrusPrint location and device. This feature reads Cirrusprint connection information from a [cirrusprint] section in the deliver.ini file, which for existing installs will need to be copied from uf90d.ini.sds. This section contains server and login information. The following is an excerpt from the version 10 manual regarding the -o option: The output device can be specified in the form "cp:locid:devid:title" to send output to a CirrusPrint output device. The [cirrusprint] section of deliver.ini must be configured with server, login, and password values so the UnForm server can submit the job. The title value is optional. If not supplied, the title provided to CirrusPrint is "UnForm job n". 3/22/20 - Updated the uf90cc.exe client to use a different build tool, as the old tool has been discontinued and will no longer be possible to use later in 2020. This change modifies how uf90cc.exe is deployed, instead of a single executable it is now stored in a folder "uf90cc", and the uf90c.exe wrapper program runs it from there. If you have any full path executions to uf90cc.exe, they should become uf90cc\uf90cc.exe. 3/26/20 - Corrected a bug in text commands beginning with bcd, ck1, or ck2 values due to a change in the regular expression parser in the v9 runtime. 4/20/20 - Updated Windows installer to include two dll files required in Windows 2012 installations.