Welcome to Print Wizard! This file is here to help you get started with the 'live' or the demo version of PrintWiz. The only difference is that the demo version will tag each printed page with a line indicating it is printed with an unregistered version. *************************************************************************** FILES INCLUDED In addition to this file (readme.txt), you should have: * the printwiz program (printwiz.exe) * the callable module (pwdll.dll) * the MapiSend program (mapisend.exe) * the Print Wizard LPD program (pwlpd.exe) * the "What's New" text file (whatsnew.txt) * the main documentation file (printwiz.doc) * documentation of MapiSend (mapisend.doc) * documentation of PWLPD (pwlpd.doc) * Notes on faxing with WinFax Pro (winfaxpw.doc) * two support files for filePro (printwiz.prt and printwzc.prt) and several sample files which you can have PrintWiz print. The file PRINTWIZ.DOC explains Print Wizard's design goals, its HTML-like coding scheme, and how to use the various programs. *************************************************************************** THE PROGRAM The printwiz.exe file contains a 32-bit Windows program. It will run on Windows 95, 98, ME, Windows NT, and Windows 2000. The program is a 'console' application, which means it has no operator interface. In most operation it is invisible. Its behavior is governed by command line parameters. *************************************************************************** INSTALLATION The only installation necessary is to put the executable components somewhere in your PATH. *************************************************************************** USING PRINT WIZARD WITH FILEPRO Print Wizard now includes two printer definition files for use with filePro (a database system). They are: PRINTWIZ.PRT For use with monochrome printers PRINTWZC.PRT For use with color printers Both are designed to be printcode-for-printcode compatible with PRT files commonly used in filePro to support HP Laserjet and DeskJet printers, as developed by Jim Asman. That is, if you have a filePro program or report output designed to include printcodes from Asman's PRT files, you should be able to substitute the above PRT files. The print data then generated will contain Print Wizard Markup Language (PWML) tags. When that print data is sent through Print Wizard, the printed output should be highly compatible. In addition, printcodes are provided to allow: * Printing barcodes * Printing bitmap pictures * Printing the Euro character * Printing form overlays To install: * Place the PRT files in the same directory as your other printer drivers for filePro. * Configure filePro to use the one of the PRINTWIZ printer drivers, and to print to a particular disk file. * If your filePro supports the PFPOSTPRINT environment variable, do SET PFPOSTPRINT=c:\somedir\printwzd Otherwise, set up Print Wizard in despooler mode as documented. Notes on usage: * Code 3 will initialize the PW in general, but will not select a font. This will leave PW configured to its default font, normally Courier New. This is a good choice, because it is scalable in both directions. * If your printout is not scaling fonts correctly, check in its control panel setting for how it handles fonts. Generally you DON'T want to allow font substitution, and you may need to experiment with how the driver downloads TrueType fonts. * If you explicitly request a font, such as LinePrinter, and the printer does not have it (as indicated by its driver), PW will fall back to using Courier New. * PW uses internal bitmaps to create all linedraw characters. * If you feed PW a file containing escape sequences, such as from a different PRT, PW will see the escape codes and automatically revert to printing directly to the Windows spooler. * Windows drivers generally don't handle the printer's resident Courier font very well. It is better to stick to Courier New. This may require adjustment of your program, or your PRT file. * Try running with the PRINT DEBUG feature. In PRINTWIZ.EXE, use a command line parameter "/vDEBUG". * Try out BARCODES. Use code 73 to initialize barcode parameters. Change this printcode as necessary, to set a different style of barcode, different height, etc. Then to print a barcode, use code 74, followed by text to barcode, followed by code 75. * Try white-on-black, code 77. * Try printing pictures. Use code 68 to initialize (adjust as necessary). Then use code 75, followed by base file name, followed by code 76. For instance, as code 68 is configured, if you do code 75, then "wally " then code 76, you'll get a picture found in "wally.gif", in the same directory as the file being printed. You can adjust code 68 to indicate your pictures are in a particular directory, by adding the HREF parameter. * To do form overlays, either bitmap or PCL, you'll need to create or change an initialization printcode, to include the OVERLAY parameter. *************************************************************************** USING PRINT WIZARD WITH ACUCOBOL The DLL form of Print Wizard can be used with a Windows-based Acucobol program, to achieve auto-fit as well as fancy printing. The sample file TEST-PW.CBL demonstrates how to do this. Notes: * The PWDLL.DLL must be in the same directory as the compiled cobol object (test-pw.acu, for instance). * The runtime configuration file must contain the line DLL-CONVENTION 1 *************************************************************************** CHANGE HISTORY Changes in 1.2 * Barcode * Allow tags to stretch past one line * Bitmaps: how to make sizing device-independent? (based on IMG_DPI) * Allow setting manual paper size, especially length for dot matrix printers (PAGESIZE X= Y= ). Setting only one of them assumes X = 8.5 inches, Y=11 inches. * ALIGN options for IMG * HSPACE option added for IMG * All unit assumptions based on DPI or IMG_DPI * Handling of DPI (Dots per inch): * Assume DPI = IMG_DPI = 120 * If we get PAGESIZE, take my assumtions (DPI=720, IMG_DPI=300) * Allow DOTSPERINCH in PAGESIZE, BODY * Allow IMGDOTSPERINCH in PAGESIZE, BODY * Added BASE HREF * Measuring line width now accounts for tags, ampersand characters, extra CRs at end * Margins now figured BEFORE calculating optimal character width * Numerous bugs fixed * RIGHTMARGIN, BOTTOMMARGIN * We don't open a page until necessary for text. CRs, LFs after last FF get ignored * Bug fixed: if font width was specified (explicitly or via PrintWiz), font generated could be too tall, resulting in lost line * For unpaginated text, will attempt 66 LPP before 6 LPI * RIGHTMARGIN, BOTTOMMARGIN * 66 LPP Changes in 1.2a: * Fixed bug in color of rectangle (HR) * HR outline sometimes lost right edge. * HR now centers between margins Changes in 1.2b: * Deal better with an ampersand that does NOT represent a special character. * Allow ampersand special-character entities to be terminated by space as well as semicolon. * Make program more robust in handling erroneous HTML. * In PrintWiz program, allow '/i' parameter, indicating file is ISO. Changes in 1.3: * PrintWiz bug fixed: bitmap WIDTH, HEIGHT were using units of DPI; now using IMG-DPI. * PrintWiz bitmap sizing: if only one of height, width specified, scale the other proportionally * If file contains escape codes, go to "raw" printing. Changes in 2.0: * When logging the print jobs, if device is "captured" (such as LPT2:), show where it's mapped to. * For raw printing, change method of determining file name to write to, to work on NT also. * Allow character entities to contain decimal or hex representations: &#Dxxx (decimal) &#Hxxx (hex) * Allow encoding of Unicode characters as above. * Numeric parameters can be in quotes, such as * Allow following to have relative sizes (such as 'size = -2'), percentage, units (pointsize = 12pt), and fractional values: font pointsize * Break line before ampersand entities if necessary. * Process
(Break) * Show options if /? or illegal parameter * Support GIF files * WININET: * Allow main file to be on the Internet * Allow GIF image file to be on the Internet * If BODY elements (text, bitmaps, barcodes, hr) found before raw text don't print them. * In wiz_analyze, keep track of where BODY starts * Bug fixed in logfile handling * When specifying printer (/p), can leave off "WINSPOOL," * Parameter /cnnn sets baud rate to 'nnn' if printing goes out 'raw' * Improvements in raw print handling as in Anzio 12. * Improved handling of logging, parameter errors. * Make wildcarding work without specifying full path. * Allow wildcarding when not doing keepalive. * Allow input from stdin, indicated as file name "-" * If bitmap image not found, print a box. * Improvements in wrapping after image. * Add OVERLAY option to PAGESIZE tag. * Improve accuracy of fractional horizontal, vertical character spacing * Also recognize as equivalent to * Allow specification of file to print to with /f * Allow COLOR specification on FONT * Allow additional color names: aqua, blue, fuchsia, green, lime, maroon, navy, olive, purple, red, silver, teal, yellow. * Improve handling of units such as in pointsize, for pointsize=[+|-]nnn[%|units] * Allow units for * pagesize (linespacing, x, y) * body (leftmargin, topmargin, rightmargin, bottommargin) * HR (size, width, outline, x, y) * goto (x, y) * font (pointsize, pitch) * img (x, y, border, hspace, vspace) * barcode * When printing HR, advance one half current line spacing before and after * Additional color names * Improved handling of " & " in
 - now doesn't lose following space
* Recognize € for Euro character
* Some adjustments in point size handling made for more accuracy
* Provide as a DLL (PWDLL.DLL)
 
Changes in version 2.0a:
* Bug fixed in GOTO in Y direction.
* Add superscript (, ) and subscript (, ). Vertical
  shift is 3/8 of current ascent. Size changes to 3/4 of current size. Note
  that this may affect horizontal spacing.
 
Changes in 2.0b:
* Better determination of which Unicode values are wide.
* In PrintWiz.EXE, added the following parameters:
     * /vLEVEL=xxx  (xxx is HIGH or LOW or RAW) turns off Print Wizard
                    features, and just outputs at the indicated method.
                    You may need to force certain jobs to print RAW,
                    for instance.
     * /vTAGS=OFF   Print Wizard will do auto-fit, but will ignore, and
                    therefore print, all tags.
* Can now enter size in units (pt, in, etc.) for FONT SIZE as well
  as for FONT POINTSIZE.
 
Changes in 2.0c:
* Printwiz.exe: Bug fixed in handling findfirst.
 
Changes in 2.0d:
* Compatible with Delphi 5
* Fax option
* Bug fixed when buffer filled.
* New option: /r
 
Changes in 2.2a:
* When a horizontal rule (HR) is specified with relative positioning, it is
  printed relative to the basepoint of the current text line.
* Bug fixed in handling PWML with no CRs or LFs.
 
Changes in 2.2b:
*  In Print Wizard's PCL overlay handling:
      * Filter out Printer Job Language (PJL).
      * PCL file can be on FTP or HTTP server.
*  Print Wizard can now specify Duplex, in the PAGESIZE tag:
     
   Other options are HORIZONTAL and OFF.
*  Allow "&Euro;" as well as "€".
*  Print Wizard now has a tag  that behaves almost like 
   in that everything following is plain text, and PW won't process "<" as
   a tag or "&" as an ampersand entity, UNLESS it is prefixed with a
   trigger control character, normally control-Z. Thus the sequence
      ctrl-Z & e u r o ;
   will cause the printer to print a Euro character. The trigger character
   can be overridden in the tag as
      <LEGACY TRIGGER=25>
   for instance, where "25" is the decimal value of the trigger character.
   So a new, better, example for the print-init file would be:
      <html><body leftmargin=1in topmargin=1in><LEGACY>
 
Changes in 2.2d:
*  Change in Print Wizard logic for determining character width:
      If incoming line width < 80, and printable width < 8 inches,
         if width will fit at 10 CPI, use 10 CPI.
 
Changes in 2.2e:
*  Mini-page logic (especially for labels, etc.).
   When PW is processing a print job,
     IF paper source is "tractor"
     AND you haven't specified orientation, paper size, etc. via tags
     AND there's less than 80% of a pagefull of lines
     THEN
        PW sets the printer to a custom page size that is just as long
        as the print job (at 6 lines per inch).
   For instance, if you're using a tractor-feed printer and PW gets a
   passthrough-print job of 12 lines, it will print a 2-inch page.
* Allow positioning in units of "li" = lines
* In FONT tag, allow LINESPACING
* Make LINESPACING variables REAL
* Use bitmaps for linedraw characters created with ampersand entities
* Deal better with fonts or character sets that don't exist in this
  printer.
* Deal with printers (such as Oki 320) that mess up rounding when
  setting custom page sizes.
 
Changes in 2.2f:
* Fixed bugs that caused GPFs when printer was specified in command line
* Debug goes to log
* Fixed bug in printing files containing escape codes
* Improvement in horizontal text positioning, avoiding rounding errors.
 
Changes in 2.2g:
* The FONT tag can now specify a BACKGROUND color. For instance:
  <font color=white background=black>
* New color names CYAN and MAGENTA.
* In the BASE tag, a new parameter specifies the default extension for
  IMG files. For instance, if you use
     <BASE HREF="c:\mypix" EXT=".BMP>
  once in the print job, you can then specify individual pictures with
     <IMG SRC=jones       >
  and get the image file c:\mypix\jones.bmp.
* New barcodes. Barcodes can now be printed on virtually
   any Windows-supported printer, without barcode font files, as they
   are generated in program logic. Parameters in the BARCODE tag are:
      SIZE=nn           Height of barcode (assumes units of points)
      POINTSIZE=nn      Same as SIZE
      SRC=xxxx          Data to be barcoded
      SUPPLEMENT=xxx    Supplemental data to be barcoded
      STYLE=xxx         Type of barcode, from UPCA, UPCE, EAN13, EAN8, 2OF5,
                        CODABAR, CODE11, CODE39, CODE93, CODE128, CODE128B
      X=nnn             X-position
      Y=nnn             Y-position
      BARWIDTH=nn       Width of smallest bar, units of inches
      BEARERBARS=ON|OFF Turns on bearer bars on 2of5
      TALLGUARDBARS=ON|OFF  Makes guard bars taller
      CAPTION=ON|OFF    Whether to print caption (human-readable text)
      FACE=xxxxx        Name of font to be used for caption
      ADDCHECKCHAR=ON|OFF  Whether program should add check character(s)
   Note that some options affect only certain styles of barcode. See
   PRINTWIZ.DOC for more information.
* Multi-page PCL overlays. When using a PCL printer, and the
   OVERLAY tag indicates a PCL file, if the PCL file contains multiple pages
   of print, then PW will load each page into a separate macro in the
   printer, and cycle those macros as overlays. See PRINTWIZ.DOC for more.
 
Changes in 2.2h:
* A new parameter
     /vFORMAT=IBMFBA
  means that the input file format has the first character of each line
  specifying line formatting:
     +   = suppress spacing
     0   = space 2 lines
     "-" = space 3 lines (this is a dash)
     1   = skip to top of new page
 
Changes in 2.2j:
* Bug fixed when command line specifies a non-default printer, in despool mode
  (2nd and following jobs were going to wrong printer).
 
Changes in 2.3:
*  New support included for users of filePro (database system), in the
   form of two printer definition files, PRINTWIZ.PRT and PRINTWZC.PRT.
   The first is for monochrome printers, and the second is for color
   printers. By using the drivers, filePro will output print jobs with
   Print Wizard Markup Language (PWML) tags.
 
Changes in 2.3a:
*  Multi-column output, by specifying COLUMNOFFSET and optionally COLUMNGUTTER
   in BODY tag.
 
Changes in 2.3d:
*  When printing in Spooler mode, either explicitly or as a result
   of Print Wizard detecting escape codes, obey the "Print to File"
   flag (in Printer Setup), and prompt for file to print to.
 
Changes in 2.3e:
* If text is rotated, don't pretest against right margin.
* New options in the GOTO tag to save and restore cursor position:
     GOTO...SAVE=x SAVE=y
     GOTO...RESTORE=x RESTORE=y
* After GOTO, wrap line/column/page if necessary
* Bug fixed in stripping quotes from parameters
* If text rotated, when setting font size, don't adjust for baseline
 
Changes in 2.3f:
* Restored ability to wait (/w), monitoring spooler (lost in 2.2j)
* /VDOCNAME=name applies the indicated name to the document, for tracking in
  the Windows spooler.
* Pictures placed with the IMG tag can now also be metafiles, including
  plain WMF, Aldus format placeable WMF, and EMF files
* IMAGE ... WIDTH, HEIGHT can be in % or units (such as "2in" for 2 inches)
 
Changes in 2.3g:
* Allow /vLEVEL=SPOOLER
* LISTEN capability, to monitor a particular IP port (such as 9100) for
  direct net-to-printer printing. Parameter is
     /vPORT=portnumber
* Inclusion of "netprint" utility for Unix
* Addition of PWLPD program, which provides an LPD protocol interface, to allow
  Unix (and other) systems to send print jobs.
* New parameter
     /vINIT=filename
  for both PWLPD and PRINTWIZ specifies a text file to be prepended to any
  file to be printed. This file can contain initialization information.
 
Changes in 2.3h:
* Bug fixed that caused runtime error on NT systems that had run a long time
  since rebooting.
 
Changes in 2.4:
* Bug fixed in printing backspace-bolding containing "<".
* Process files in Unicode UTF-8 format. Parameter is "/u".
* Process tags:
    <P>..</P>
    <DIV>..</DIV> (just as a paragraph break so far)
    <SMALL>..</SMALL>
    <BIG>..</BIG>
    <H1>..</H1> through <H6>..</H6>
* Recognize more characters as combining marks.
* Recognize all ampersand character entities in HTML 4.1
* Deal with more combining characters
* Deal with more composed characters
* New option causes PRINTWIZ to register itself to handle printing of
  a particular extension xxx:
     /vEXT=xxx
  (a dot before the xxx is optional). For instance, to tell PRINTWIZ
  to register itself to handle .PTW files, do
     /vEXT=.ptw
* Added support for WinFaxPro API. See the winfaxpw.doc document for more
  information.
* Changes in MAPISEND
   - Now better copes with Outlook vs Outlook Express
   - Changes to order of processing profiles and recipients
   - See mapisend.doc for more information
* Changes in PWLPD
   - Changes to add user front-end
   - Changes for user defined multiple queue support
   - Changes to allow various actions to take place based on the passed print job name / file name
   - See pwlpd.doc for more information
* When printing with a printer-resident font, and a certain font width
  is needed, automatically switch between similar printer-resident fonts.
  For instance, an Oki 320 Turbo, told to print at "Courier 10cpi", will
  switch to "Courier 17cpi" in order to print a 132-column report. Likewise,
  a Laserjet III set to print in "Courier" will switch to "LinePrinter".
* Print Wizard: Improve handling of compressed pitch on dot matrix
  printer (such as Courier 17cpi on OKI 320 Turbo) to eliminate print
  head shuffling.
 
Changes in 2.4g:
* Bugs fixed in printing bitmap graphics overlays - positioning was wrong.
 
Changes in 2.4n:
* Bug fix as in 2.3h.
* Setting ORIENTATION=AUTO tells Print Wizard to assume portrait, but if
  either number of columns or computed characters-per-inch exceeds a certain
  threshhold, switch to landscape. Threshholds are settable - see printwiz.doc.
* Remove bug (introduced 2.4) that made the program stop avoiding printing
  blank pages, and print some extra pages.
* Remove initial blank pages, even when an init file is used.
* DUPLEX=LEFT, DUPLEX=TOP set duplex relative to orientation, instead of
  relative to paper shape.
* Bug fixed in UTF8
 
Changes in 2.4p:
* Make sure "nag" line shows when overlay is specified.
* Improve handling of registration of file extensions
* Added parameters: /bn /bl /bt (Binding None, Left, Top)
* Added parameters: /ol /op /oa (Orientation landscape, portrait, auto)
* Added parameter: /vOVERLAY=name
* Added parameter: /vFONT=name (or "name")
 
Changes in 2.4q:
* Added parameter: /e means eject at end of job
 
Changes in 2.5:
* Recognize <META content="charset=UTF-8">
* Auto-font switching. Print Wizard now works with a primary font and one or
  more alternate fonts. If a character to be printed is not in the primary
  font, Print Wizard will search through the listed alternate fonts, in order,
  to find a font that contains that character.
 
  If the last listed alternate font is "auto", Print Wizard will look through
  all fonts installed in Windows for an appropriate font.
 
  The default startup has primary font set to "Courier New", and alternate
  font set to "auto".
 
  To specify fonts in the command line, use
     /vFont="font1, font2, font3"
  such as
     /vFont="Courier new, ms song, auto"
 
  In the markup language, do
     <FONT face="font1, font2, fonts">
 
* Bug fixed: JPEG graphics on color printers were sometimes printed in gray.
* Improvements in handling of PCL overlays, including on color laser printers.
* Print Wizard: Resetting paper length, via PWML or with mini-page logic,
  will not reset width, and vice versa.
 
Changes in 2.5f:
* Support control of bidirectionality
   * DIR=RTL, DIR=LTR on various tags
   * /vRTL in command line
   * NOT FINISHEd YET
 
Changes in 2.5h:
* Updated Systools barcode logic to 3.03
* Changed FileMode to readOnly, so read-only files could be printed.
* Now possible to do keepalive while naming only one file to print (not
  wildcard).
* If we fail to delete a file, in keepalive mode, it's now a fatal error, so
  we don't print that file forever.
* Allow !MAPISEND to work on files in Windows' temp directory
  (eg. \windows\temp). This makes it possible to do !MAPISEND operations from
  PWLPD.
* Bugs fixed where !WINFAX line didn't have trailing spaces.
* Allow !MAPISEND on URLs, LISTENs
     (Listen assigns a temporary file name of "printwiz.ptw", so that extension
     must be registered)
* Allow !WINFAX on URLs, LISTENs
* Make !MAPISEND, !WINFAX work when text file has linefeeds only.
* Command line parameters /T (fax to) and /X (fax number, also turns on faxing) will apply to
  all files processed during wildcard or keepalive.
* Allow BMP files to be pulled from a URL.
* Allow EMF files to be pulled from a URL.
* Bug fixed in specifying OVERLAY that was a URL.
* Allow EMF or WMF as overlay. Note that as with other overlay files, the image
  will be stretched to fill the entire page.
* When a font can't be found to display a particular character, display
  a box with an X in it.
* Print Wizard: when specifying a list of fonts, you can PROHIBIT a font
  by listing it a "-" in front, i.e.,
     <FONT FACE="Courier new, -somebadfont, auto"
* Improved detection of missing characters in fonts
 
Changes in 2.5j:
* Bug fixed in drawing Unicode 2559, a linedraw character
* Bug fixed: Font sizes specified before <PRE> etc. were drawn too small.
* Apply mini-page logic if bin is "auto" (7) or "Automatically select" (15)
* Command line parameters made easier (old ones still work):
     * /DEBUG instead of /vDEBUG
     * /INIT=filename instead of /vINIT=filename
     * /OVERLAY=filename instead of /vOVERLAY=filename
* Bugs fixed in printing OEM (DOS) text to printer-resident fonts.
* PrintWiz can now print .JPG, .BMP, and .GIF files directly, based on file
  extension. File is printed as large as possible, with rotation to landscape
  mode if that is beneficial.
* Allow multiple /vEXT= settings in one command line.
* Note: You can manually register a file extension such as .utf8 to print
  using PrintWiz with the "/u" switch.
* Allow .JPEG as well as .JPG
* Bug fixed in printing pictures on printers with different resolutions
  in each direction.
 
Changes in 2.5k:
* Make PWLPD behave better on XP
* Replace PRINTWIZ.PRT, PRINTWZC.PRT (for filePro) that were missing in 2.5j.
 
Changes in 2.5m:
* Make PrintWiz respond properly to close of window, Ctrl-break, Windows
  logoff, Windows shutdown. Note: In some versions of Windows, you may need
  to set the properties of the DOS window to not warn, on termination, if
  app is still running.
 
Changes in 2.5p:
* Immediately after going into <LEGACY>, you can come out again with
  </LEGACY>, then do another <PAGESIZE>, then go back into <LEGACY>. Necessary
  for good support of filePro.
* Updated filePro support files PRINTWIZ.PRT and PRINTWZC.PRT.