PrintKit Network Print Services Version 2.3-7 Release Notes December 2016 Northlake Software Lake Oswego, Oregon CONTENTS Where to Get Help New Features Corrections in Version 2.3 Corrections in Version 2.3-1 Corrections in Version 2.3-2 Corrections in Version 2.3-3 Corrections in Version 2.3-4 Corrections in Version 2.3-5 Corrections in Version 2.3-6 Corrections in Version 2.3-7 Upgrading from PrintKit Version 2.2 Known Problems and Work-Arounds Downloading PrintKit Software Version 2.3-7 of the PrintKit software is a maintenance update to version 2.3. As such, it provides essentially the same feature set, but fixes several problems encountered in the version 2.3 software. Version 2.3 was a major release of the PrintKit software. As such, it provided significant new features, and substantial recoding to enhance reliability. The release also contained corrections to problems encountered in the version 2.2 software, and it updated the collection of printer models packaged with the software. These release notes apply to version 2.3 of the PrintKit software and the 2.3-7 update. WHERE TO GET HELP If you purchased the PrintKit software from a reseller, they are your first contact for support. In particular, if you purchased the software in combination with a printer, your reseller is often in the best position to diagnose configuration issues or problems that result from specific characteristics of the printer. Northlake Software also provides direct telephone, e-mail, and FAX support. Support is available to customers for 90 days after purchase of the PrintKit software, and on a continuing basis for customers subscribing to support services. The telephone number for support is +1 503-228-3383, the FAX telephone number is +1 503-228-5662, and the e-mail address is printkit@nls.com. If you are having a problem with the software, make sure you have followed the suggestions in the PrintKit User Manual, Troubleshooting PrintKit, before you contact your reseller or Northlake for assistance. The support staff will be especially interested your queue configuration -- the output from KITCP SHOW QUEUE/FULL -- and in specific error messages -- operator messages produced with REPLY/ENABLE=PRINTER in effect and error messages produced by using PRINT/NOTIFY. Web Access to Technical Information Northlake Software's web site, www.nls.com, includes technical support information for the PrintKit products. This is a good place to check for model definitions for new printers. New printer model definitions are placed on the web site as they are validated. The updates are packaged as a VMSINSTAL patch kit, so it is an easy task to load them into your installed software. The web site also provides maintenance releases of the PrintKit software. Maintenance releases generally correct problems in the software. They may also address compatibility issues with new printer models, although most new printer models require only an update to the printer model definitions. NEW FEATURES The descriptions of new PrintKit software features and corrections are organized by area: document preparation, job processing, KITCP and configuration database, internals, and communications. You can also consult the PrintKit User Manual for more detailed information on changes to the PRINT and KITCP command interfaces. DOCUMENT PREPARATION These enhancements involve changes to PrintKit's parameter set and document preparation, and also to the KITCP program and configuration database. LIST data type The LIST data type formats text files in a simple listing format. The text is assumed to be encoded using the ISO Latin 1 character set. The formatting paginates the text, adds page headings, line numbers and a graybar overlay, and wraps lines longer than the page width. The formatted output is translated to the PostScript language for printing. Finishing parameters available in base PrintKit Document finishing capabilities (stapling, folding, punching), once almost entirely restricted to production class printers, are increasingly available for mid-range printers and multi-function devices. In keeping with these changes, the FINISHING parameter, originally available only for Production PrintKit, is now available for all PrintKit versions. Availability of finishing capabilities depends on the model definition for the particular printer being used. Medium selection and finishing for PCL documents PrintKit's PCL language processing has been enhanced to provide media selection using medium attributes (type, color, weight) and to perform finishing operations. Availability of these capabilities depends on the model definition for the particular printer being used. JOB PROCESSING Separator page medium selection You can now select the media used for printing separator pages. A sheet package specification controls the selection by associating separator sheet types with medium specifications. Sheet packages are created and managed using KITCP. You assign a sheet package to a queue using the queue /SEPARATE SHEET_PACKAGE parameter. KITCP AND CONFIGURATION DATABASE Enhancements to model specifications New attributes have been added to the model specification so that it provides a more complete description of printer characteristics. This greatly reduces the amount of customization required to create new model definitions. The relationship between model and queue specifications has been modified so that less device configuration information needs to be specified for a typical queue configuration, which instead refers to the model specification for most of this information. Now, /PRINTER MODEL and /COMMUNICATIONS ADDRESS provide sufficient device information for most queues. Longer model names Names of printer model definitions may now be up to 63 characters in length. Some existing model names have been changed to be more accurate or complete. New KITCP commands for sheet package specifications The ADD, COPY, MODIFY, REMOVE, and SHOW commands have been extended to apply to the SHEET_PACKAGE specifications that are now part of the PrintKit configuration database. Node names allowed for printer address You can now use a node name instead of a numeric address for the queue /COMMUNICATIONS ADDRESS parameter. This capability is available with the standard OpenVMS TCP/IP Services or third-party services that provide a compatible implementation of name translation. Improvements to KITCP interactive mode The prompting for printer model names by the interactive ADD QUEUE command has been modified to better present the large repertoire of printer models now supported by PrintKit. A two-level prompt allows you to select models for a particular vendor, then pick a particular model. Prompting for list-valued attributes has been changed to present each list element separately, making it possible to modify values without extensive retyping. New KITCP commands for modifying model and library linkages New RELINK commands allow you to make global changes to model and library linkages in the PrintKit configuration database. The RELINK LIBRARY replaces one device control library with another wherever it appears in queue /LIBRARY qualifiers. The RELINK MODEL replaces one model definition with another wherever it appears in queue /PRINTER MODEL parameters. Version numbering of definitions Printer model, document, finishing, imposition, medium, and sheet package specifications in the PrintKit configuration database may be assigned a version number to aid in documenting and tracking revisions to the specification. A version number consists of a primary version number and a revision number. The primary version number remains unchanged unless set explicitly by a KITCP ADD, MODIFY, or COPY command. The revision number is incremented automatically by KITCP whenever the specification is modified. Changes allowed to active queues OpenVMS requires a queue to be in a stopped state to be modified. If you try to modify a queue that is not stopped, KITCP will now automatically stop the queue to perform the modifications, then restart it. New /NOTIFY queue parameter (2.3-2 and later) The queue /REQUEST_TO parameter has been replaced with a /NOTIFY parameter that allows more flexible configuration of operator notifications. Separate target operator classes may be specified for notifications pertaining to the printer to which the queue is connected and those for the queue itself. An operator class of NONE allows notifications to be disabled entirely. /NOTIFY=( DEFAULT =(operator-class,...),...) DEVICE QUEUE INTERNALS Device control libraries are deassigned when inactive Previous versions of the PrintKit symbiont kept device control libraries assigned as long as the symbiont was active. The side-effect of this behavior was to prevent modifications to the libraries, requiring PrintKit queues to be stopped to allow libraries to be updated. The symbiont now deassigns libraries when it is idle. On a system with a large number of active queues, you may still need to stop queues before making changes to PrintKit device control libraries, but on typical systems this change allows you to make changes without stopping queues. New configuration database format The PrintKit configuration database has been changed to use a new, more compact format. To avoid potential confusion with earlier versions of the configuration database, its name has been changed from PRINTKIT_CONFIG.DAT to PRINTKIT_CONFIG_023.DAT. Reorganized standard device control library modiles The organization of standard device control library modules used by PrintKit has changed substantially from previous releases. To avoid potential confusion earlier versions of the library modules, the naming scheme used for standard modules has been changed. Improved PPD job patch file processing PrintKit uses PostScript Printer Description (PPD) files, which provide information about printer featues, as part of model specifications. PPD files provide a job patch file capability, which can specify initial state settings a printer requires or provide corrections to know problems with the printer. This release corrects problems with the placement of patch data in the print job, and ensures it appears before any code that might depend on it. New implementation of separator page generation Changes to implement separator sheet packages resulted in a substantial recoding of separator page generation. INSTALLATION AND IVP IVP now accepts data type parameter When you perform the IVP manually, you can select an existing queue for testing. You may now also select which data types are to be tested. COMMUNICATIONS New implementation of printer job control processing Printer job control processing has been substantially rewritten. In particular, this affects the printer controls generated for PJL and PostScript job control, and the handling of printer responses and status reporting. The new implementation also reorganizes how operations are performed when both PJL and PostScript job controls are active. Unrestricted local port range for lpr/lpd is default The lpr/lpd standard (RFC 1179, Line Printer Daemon Protocol) specifies that jobs must be submitted from client TCP ports in the range 721-731. (These are privileged port numbers that normally have restricted access -- the intent is to provide a measure of control over job submission.) However, typical TCP protocol processing imposes a delay (of up to four minutes) between when a port is released and when it is available for reuse. Clearly, having only ten client ports can cause the client to block (even for shorter delays). Most lpr/lpd server implementations avoid this known problem by not enforcing the client port restriction, and lpr/lpd clients use any available port. This is now PrintKit's default behavior. If a particular printer restricts the client port range, this can still be specified using the LOCAL_PORT parameter in a queue or model definition. Support for additional PJL features PrintKit now recognizes and processes PJL job cancellation notifications (delivered as USTATUS JOB CANCELED messages). Additional PJL status codes are recognized and reported. CORRECTIONS IN VERSION 2.3 JOB PROCESSING Removed erroneous automatic HPGL data type selection Automatic document data type detection was erroneously selecting the HPGL data type. The data type detection no longer performs this selection. KITCP AND CONFIGURATION DATABASE Better handling of long command lines in SHOW /DCL output The output from SHOW /DCL commands has been adjusted to avoid creating commands that are too long for proper execution. CORRECTIONS IN VERSION 2.3-1 COMMUNICATIONS BADLOGIC error produced by STOP/ABORT of print job Aborting an active print job with a STOP/ABORT or DELETE/ENTRY command could cause the PrintKit symbiont to generate a BADLOGIC error. The error occurred if the aborted job was in the starting state, and the symbiont was in the process of establishing communications with the printer. Typically, the problem occurred when waiting for an off-line or busy printer to accept a connection. When the PrintKit symbiont fails with an unexpected fault, such as BADLOGIC, it produces a process dump file, SYS$SYSTEM:PRINTKIT.DMP. If PrintKit dump files are present on your system, you should delete them. CORRECTIONS IN VERSION 2.3-2 DOCUMENT PREPARATION Corrected ANSI-PPL3 font incompatibility with certain printers The font handling for ANSI-PPL3 documents was incompatible with several printer models, due to errors in font handling in their PostScript implementations. Symptoms varied depending on the model, but included incorrect rendering and failure to print documents. The font handling has been rearranged and simplified to avoid these problems. Corrected form margins handling for ANSI-PPL3 documents Several problems in handling margins specified with the form /MARGINS qualifier have been corrected. These included mispositioning of the page content following a non-zero top margin, and incorrect interactions between margins and the NOTAB print parameter. Improved printing speed for ANSI-PPL3 documents ANSI-PPL3 document processing has been changed to reduce the delay in printing the first page of documents. This involved eliminating unused font definitions and deferring others to their point of first use. KITCP AND CONFIGURATION DATABASE Improved selectivity of operator messages The PrintKit symbiont generates operator notifications for problems related to the operation of the printer associated with the queue as well as problems with the queue itself. Depending on the operating environment, the two types of problems may be handled by different classes of operators, and the traffic of unwanted messages can become a distraction that obscures significant messages. A new queue /NOTIFY parameter allows the two types of notifications to be directed to different operator classes or to be disabled entirely (see New /NOTIFY queue parameter (2.3-2 and later), above, for more details). Improved configuration database integrity KITCP has been changed to better protect against damage to the PrintKit configuration database when unexpected data is encountered in database objects. Modification of potentially damaged objects is now inhibited. KITCP also is better at continuing processing after problems are encountered. Replaced OBJNOTSHOWN message with OBJFORMAT An OBJNOTSHOWN message was generated if configuration database errors were detected during a SHOW operation, although the affected object was still shown. A more appropriate OBJFORMAT error is now used. Corrected default values for MODEL JOB_CONTROL parameter Explicit values are now required when specifying MODEL JOB_CONTROL parameters. COMMUNICATIONS lpr/lpd protocol mis-synchronization caused queue to stall A synchronization error in the PrintKit implementation of the lpr/lpd protocol could halt data transfer to the printer, causing the queue to stall. The failure occurred with very low probability, so it was most evident under conditions of heavy use. Code interlocks were corrected to remove the problem. Suppressed duplicate printer status operator notifications A history of operator notifications is now used to reduce duplicated notifications. This addresses a problem with printer models that generate repeated alerts when requiring operator intervention. CORRECTIONS IN VERSION 2.3-3 COMMUNICATIONS Printer status operator notifications were suppressed incorrectly Corrected an error in suppressing duplicate printer status operator notifications that caused all printer status notifications to be suppressed. Adjusted for printers with limited PJL capabilities For certain printers with limited support for PJL job control, unrecognized PJL commands generated by PrintKit produced errors. These commands are now suppressed. This affects mostly older HP printer models, including the DesignJet 650C and 755CM, DeskJet 1200C and 1600CM, and LaserJet IIISi. CORRECTIONS IN VERSION 2.3-4 COMMUNICATIONS Spooled option incorrectly applied to non-lpr/lpd communications A SPOOLED OPTIONS setting specified as a printer model /DEFAULT COMMUNICATIONS configuration could be incorrectly applied when the communications protocol setting for a queue was not lpr/lpd. This typically produced a BADLOGIC fault when files were printed. The spooled setting is now correctly restricted to the lpr/lpd protocol. Task notifications not reported correctly The PRINT /NOTIFY setting was not processed correctly when configuring the delivery of task notifications. Print completion notifications are now correctly generated when /NOTIFY is specified. CORRECTIONS IN VERSION 2.3-5 DOCUMENT PREPARATION Corrections to ANSI-PPL3 Sixel graphics Corrected a problem that caused Sixel graphics to fail if more than 127 colors were used. Corrected several problems in the generation and processing of the PostScript output from Sixel graphics. Corrected ANSI-PPL3 VPR, VPB and CUU commands The command parameter that specifies the number of units of position change was being interpreted incorrectly, resulting in motions one unit too small. The parameter is now interpreted correctly. CORRECTIONS IN VERSION 2.3-6 COMMUNICATIONS Improvements to printer error reporting Added context to display of printer PJL error messages. INTERNALS Corrections to error message display Secondary error messages following a system exception message are now displayed correctly. Corrections to PPD file processing PrintKit uses PostScript Printer Description (PPD) files, which provide information about printer featues, as part of model specifications. In certain cases, data from the PPD file was output to the print job without correct line termination, which could result in invalid PostScript code. This release adds the required line termination. Corrected unexpected symbiont termination Causes included uninitialized data, incorrect exception handling. CORRECTIONS IN VERSION 2.3-7 COMMUNICATIONS Reduced processing time for small jobs On completion of job processing, the PrintKit symbiont waits briefly for status messages from the printer before closing the communications channel. For communications protocols that do not return status, such as lpr/lpd, this delay serves no purpose and noticeably increases the processing time of small jobs. The symbiont now minimizes the delay when status is not returned. UPGRADING FROM PRINTKIT VERSION 2.2 For the most part, PrintKit 2.3 is upward-compatible with version 2.2. There are some additional steps you'll need to take during installation to preserve your existing configuration. Your existing print commands will work without change. Update License PAK PrintKit upgrade kits for current customers are shipped with a PRINTKIT-UPDATE LMF Product Authorization Key (PAK). This PAK works in combination with your existing PRINTKIT PAK to enable the use of the version 2.3 software. Load the new PRINTKIT-UPDATE PAK on your system along with your existing PRINTKIT PAK. (Don't remove the existing PAK.) When you use the updated software, the PrintKit queue startup message will display PRINTKIT+PRINTKIT-UPDATE as the license PAKs used by the queue. Update configuration information Two of PrintKit's primary configuration files have substantially different format and content for the version 2.3 software, and have been given new names to distinguish them from earlier versions. The PrintKit configuration database is renamed from PRINTKIT_CONFIG.DAT to PRINTKIT_CONFIG_023.DAT, and the base device control library from PRINTKIT.TLB to PRINTKIT023.TLB. (The configuration database is located in the same directory as QMAN$MASTER.DAT -- normally SYS$SYSTEM: -- and device control libraries are in SYS$LIBRARY:.) If you are performing an upgrade, the installation transfers information from your existing configuration database to the new one, and it creates the new device control library from scratch. The installation leaves your existing copies of these configuration files unchanged; you can delete them once you are comfortable with the upgrade. During an upgrade, the installation copies queue, document, finishing, imposition, and medium definitions from your existing configuration database -- it does not copy model definitions. It recreates standard model, document and medium definitions. Any local additions or modifications to model definitions will be lost, as will any modifications to standard document or medium definitions. When the installation copies existing queue definitions, it updates them to refer to the new base device control library. Some model names have changed with the 2.3 software, and the installation also updates queue definitions to use the new names. If you have command procedures to recreate your PrintKit queues, you will need to modify them to reflect these changes. Model definitions that have been distributed through preliminary Printer Model Supplement may not be recreated during the installation. If you have queues that refer to such definitions, you will see warning messages as your queues are copied, and you will need to install a new preliminary supplement for the version 2.3 software. (You should not reinstall a version 2.2 supplement, because the model definitions have changed substantially.) The version 2.3 software has changed the way queues inherit configuration information from model definitions, and the effect is that most queue /PRINTER and /COMMUNICATION parameters are no longer required. A standard queue configuration now typically requires only the printer's model and network address. Your existing queue definitions should still work, but you may want to update them to take advantage of this new capability. Your base device control library should not contain local customizations. Any locally-created modules should be stored in an appropriate auxiliary device control library. (A standard configuration provides PRINTKIT_PCL.TLB for PCL modules, PRINTKIT_PS.TLB for PostScript modules, and PRINTKIT_ANSI.TLB for ANSI-PPL3 modules, and it is possible to create additional libraries.) Deprecated and obsoleted parameters Legacy protocols retired The DQP and TRANSPORT1 communications protocols are specific to legacy Kodak printers, and are no longer supported by PrintKit. The PCS option for the lpr/lpd protocol is also specific to legacy Kodak printers, and it too is no longer supported. KNOWN PROBLEMS AND WORK-AROUNDS Conformance to ANSI-PPL3 specification There is a discrepancy between the Digital ANSI-Compliant Printing Protocol LEVEL 3 Programming Reference Manual specification and the DECprint implementation of the ANSI-PPL3 data type. The Reference Manual specifies that values for nominal, minimum, and maximum width of space be scaled when using a fixed HAI (JFY command description). However, the DECprint implementation does not adjust the minimum or maximum values. When text is justified with limits, this discrepancy produces a differing minimum spacing when a line is compressed, and a differing cutoff point for unjustified setting when a line is expanded. At present, the PrintKit implementation conforms to the Reference Manual specification. DOWNLOADING PRINTKIT SOFTWARE Downloadable copies of the PrintKit 2.3-7 software and related maintenance updates and printer model supplements are available from Northlake Software's web site, www.nls.com. These kits are specially packaged to reduce their size and simplify the task of transferring them from one system to another. Each downloadable kit is contained in a single self-extracting archive. Once you've transferred this file to your OpenVMS system, you run the file to unpack the individual components of the distribution, which typically consist of VMSINSTAL savesets and installation notes. Transferring and unpacking the downloadable kit Separate versions of the kit are provided for each of the OpenVMS hardware architectures, identified by their file types: .VAX_EXE for VAX systems, .AXP_EXE for Alpha, and IA64_EXE for Integrity. Each version contains a full kit -- once unpacked, it can be installed on any of the hardware architectures -- but each architecture requires its matching version of the self-extract code. The downloadable kits are binary files. Be sure to keep this in mind if you need to transfer them between systems. (For instance, use TYPE IMAGE with FTP.) They should appear on your OpenVMS system with fixed-length 512-byte records. For example, to download the PrintKit 2.3-7 distribution to an Alpha system, you select the PRINTKIT023.AXP_EXE kit. Once you've transferred this file to your system, run it: $ RUN PRINTKIT023-7.AXP_EXE inflating: printkit023-7.readme inflating: printkit023-7.a inflating: printkit023-7.b inflating: printkit023-7.c inflating: printkit023-7.d inflating: printkit023-7.e inflating: printkit023-7.f Info-ZIP copyright and license The downloadable kits are in ZIP format, produced using the Info-ZIP software, and the self-extract code is a simplified derivation of the Info-ZIP UNZIP software. We greatly appreciate all the good work from the Info-ZIP team and their willingness to share the result of their efforts. The following notice applies to the self-extract code incorporated in the downloadable kits. We are providing it here to comply with the Info-ZIP terms of use and redistribution. This is version 2000-Apr-09 of the Info-ZIP copyright and license. The definitive version of this document should be available at ftp://ftp.info-zip.org/pub/infozip/license.html indefinitely. Copyright (c) 1990-2000 Info-ZIP. All rights reserved. For the purposes of this copyright and license, "Info-ZIP" is defined as the following set of individuals: Mark Adler, John Bush, Karl Davis, Harald Denker, Jean-Michel Dubois, Jean-loup Gailly, Hunter Goatley, Ian Gorman, Chris Herborth, Dirk Haase, Greg Hartwig, Robert Heath, Jonathan Hudson, Paul Kienitz, David Kirschbaum, Johnny Lee, Onno van der Linden, Igor Mandrichenko, Steve P. Miller, Sergio Monesi, Keith Owens, George Petrov, Greg Roelofs, Kai Uwe Rommel, Steve Salisbury, Dave Smith, Christian Spieler, Antoine Verheijen, Paul von Behren, Rich Wales, Mike White This software is provided "as is," without warranty of any kind, express or implied. In no event shall Info-ZIP or its contributors be held liable for any direct, indirect, incidental, special or consequential damages arising out of the use of or inability to use this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. Redistributions of source code must retain the above copyright notice, definition, disclaimer, and this list of conditions. 2. Redistributions in binary form must reproduce the above copyright notice, definition, disclaimer, and this list of conditions in documentation and/or other materials provided with the distribution. 3. Altered versions -- including, but not limited to, ports to new operating systems, existing ports with new graphical interfaces, and dynamic, shared, or static library versions -- must be plainly marked as such and must not be misrepresented as being the original source. Such altered versions also must not be misrepresented as being Info-ZIP releases -- including, but not limited to, labeling of the altered versions with the names "Info-ZIP" (or any variation thereof, including, but not limited to, different capitalizations), "Pocket UnZip," "WiZ" or "MacZip" without the explicit permission of Info-ZIP. Such altered versions are further prohibited from misrepresentative use of the Zip-Bugs or Info-ZIP e-mail addresses or of the Info-ZIP URL(s). 4. Info-ZIP retains the right to use the names "Info-ZIP," "Zip," "UnZip," "WiZ," "Pocket UnZip," "Pocket Zip," and "MacZip" for its own source and binary releases.