/ Site Map / About Us / General Products / MV Products / Outsourcing / Home page /
![]()
PixiePrint - PCL to Windows-Printer Translator
PixieWare Software develops the innovative PixiewareŽ software products for:
Building browser-based GUI interfaces to transform text-based applications Extracting data intelligently from the Web (scraping) and from PICK db's Building database driven Web sites with emphasis on dynamic interfaces
Takes printer output from legacy applications in either plain text or HP PCL format and translates it into the universal Windows GDI format for any printer setup on Windows.
November 2001: Barcode Support
PixiePrint can now print popular barcode fonts with controls embedded in PCL output from Pick. Can position nominated barcode font anywhere on output document as well as specify its height and width.
New and Improved August 2001: Automatic configuration option.
PixiePrint is usually configured by manually editing config file
"PixiePCL.ini". But now, if not configured, PixiePrint will offer to scan
your system for printers and create a working subfolder for
each one. It will also write an appropriate "PixiePCL.ini"
file for you. You can then modify that later to make use of features like
papersize, portrait, landscape, letterhead templates ..
In subfolder "\test" you will find sample print jobs "invoiceplain.txt" and
"invoicePCL.txt". Copy them into your working subfolders to give a quick
start to seeing PixiePrint in action.
New and Improved November 2000: Scripting
We are now making use of the new Windows Scripting facilities to
make our universal "PPrinter" object programmable in VBSCRIPT.
Your script can be embedded in PCL output, or act as an alternative to PCL, or
be placed in a separate "Template" file. Details in the last
section of this document.
How it works:
PICK etc prints to a "print to file" printer setup on the print
server. Or you can output your print job by other write-to-file means eg
the PICK "Super-Q-Pointer" or the UNIVERSE "Type 1 File".
PixiePrint reads this file, uses the VB Printer Object to translate it, and
prints it to any printer.
More than one printer can be set up. Each printer usually needs a mirroring "Print-to-file" mock printer set up as well. The "Port" is entered as a file name, and PixiePrint will print to different printers depending on which of its "drop box" folders you write your print job into.
How to set it up:
PixiePrint can be supplied on 2 floppies or a variety of other media.
Once setup is complete, decide where the temp print files are to be
placed. This is usually as sub-folders from the folder holding
PixiePCL.exe but you can choose to keep them separate. We ourselves like
to work from a folder named "C:\d3Shared\Printers"
because we already have a convention of using "C:\d3Shared"
as a home base for a variety of PICK D3-to-windows interfacing tasks.
If you want to use a separate working area, define it with a "Path" line in
"PixiePCL.ini"
eg, for our convention,
Path=C:\d3Shared\Printers
Then create your sub-folders. We suggest short names of the target printers eg "Brother", "Epson 850"
Go to Windows Settings --> Printers and create new Printers to mirror each of the real printers you want to use. We suggest names for them like "PCL to Brother", "PCL to Epson". Select the "Generic/Text" driver and for "Port", create a new Port and give it the temp file name:
Examples for default setup:
C:\Program
Files\PixiePCL\Brother\spool.txt
C:\Program Files\PixiePCL\Epson 850\spool.txt
Examples with customised path
C:\d3Shared\Printers\Brother\spool.txt
C:\d3Shared\Printers\Epson 850\spool.txt
These temp file names MUST end with the ".txt" extension
Navigate to the folder containing PixiePCL.exe and look for PixiePCL.ini
Double-click on it to edit it: eg
Path=C:\d3Shared\Printers Folder1=Brother*Brother 600 Folder2=Epson*Epson 850 COLOR
The path is that of the root folder for the printer temp files.
Folder1, Folder2 etc are in the form <foldername>*<printer name>
with <printername> being the final printer as named under its icon in
Windows, Settings, Printers.
BUT Note that on Windows 2000, printer names often need to take the
network pathname form.
eg a printer listed as "report on ofps1" needs to be written in
your .ini file as "\\ofps1\report".
The latest version of PixiePrint has a "My Printers" button. Click that to
get a list of available
printers in the correct wording and format for ini setup use.
Other options eg "switch off shading" are documented in the comments within the .ini file
In non-PICK systems
The app or system must print to a Windows mock printer object as
described above. If that is not possible, you may as an alternative be
able to get the app to write its printer output directly into a file eg
"spool.txt" for PixiePrint to pick up.
In the PICK Systems
You need to redefine your printers "f0", "f1" etc to point to the new
mirroring ones you have just created.
eg for us, using a "user-coldstart" item in "dm,md,"
user-coldstart 001 n 002 set-date-eur 003 dev-make -t NTprinter -n 30 -a "PCL to Brother" 004 startptr 0,0,0,s30 (s 005 dev-make -t NTprinter -n 31 -a "PCL to Epson" 006 startptr 1,1,0,s31 (s
where the printer name at the end of a dev-make line must match the Windows Printer Name eg as found as the label for its icon in "Settings, Printers"
The easiest way to activate what you have typed is to stop PICK and re-start
it.
Alternatively, to manually implement your new printer setup "on-the-fly" you
need to de-activate the previous settings then manually enter the new ones as
you have typed them in.
For the above example you would enter:
dev-remov 30 sp-kill 0 (d dev-remov 31 sp-kill 1 (d
... followed by manually entering the lines you have changed in user-coldstart
Refer to PICK "dev-make" and "startptr" for more details.
Other Approaches
From PixiePrint's point-of-view, what is required is a an accessible file.
That does not need to come from a printing process and it may be easier in some
environments (eg mixed Linux and Windows networks) to adapt your PICK or any
other legacy code to write intended printer output directly to a file rather
than trying to send it to a printer. With the PICK engines, this
could mean use of "Super-Q-Pointers" or "DOS Services Gateway".
Take care with names and spelling: For each printer, there are names in 5 places that need to cross-reference correctly: check through them!
New and Improved, November 2000: Scripting
The challenge that led to this: customers wanting to print
pictures from available files of eg company logos.
We were thinking about scripting anyway, because PixiePrint translates PCL
to methods of the 'Visual Basic Printer Object' and we thought it would be a
good idea to make this object more directly accessible to our users as a
versatile alternative to PCL. Instead of the cryptic code of PCL, the VB
Printer Object offers human readable commands like "Font", "Line",
"PaintPicture" and "Circle". Compared to PCL, VB Printer Object is easier
to read, debug, and therefore largely self-explanatory and
self-documenting. The code is more verbose and takes up more bytes, but
hey, disks are bigger this century!
Features and points of our implementation
VBSCRIPT - notes
PPrinter: details of the scripting methods (in order of expected usefulness)
Call PPaintPicture( picturefile [, x, y,
width, height ] )
Part
Description
PictureFile
Required. String. The source of the graphic to be drawn onto the page. Can be a
full path eg "C:\d3Shared\Printers\images\pixie.gif"
or relative eg "images\pixie.gif"
x, y
Optional. Single-precision values indicating the destination coordinates
(x-axis and y-axis) in millimetres (mm) on the page for the picture
to be drawn. If omitted the current page position is used. Note this
is a major difference from the original Microsoft PaintPicture
behaviour.
Width
Optional. Single-precision value indicating the destination width in
millimetres of picture. If the destination width is larger or
smaller than the source width, the picture is stretched or
compressed to fit. If omitted, the source width is used.
Height
Optional. Single-precision value indicating the destination height in
millimetres of picture. If the destination height is larger or
smaller than the source height, the picture is stretched or compressed
to fit. If omitted, the source height is used.
Call PPrint( text_to_print, newline)
| Part | Description |
| text_to_print | Required. String. |
| newline | Optional. Boolean True/False value indicating whether to re-position to a new line after printing. Default is True |
CCurrentX
CCurrentY
Single precision (floating point number) properties getting or
setting (x,y) position in millimeters. eg:
CCurrentX = CCurrentX + 25.4 'this moves us 1 inch
to the right
CCurrentX = 40
CCurrentY = 150
Call PPrint("The quick brown fox.", False)
FFontName
String property eg
FFontName = "Times New Roman"
FFontBold = "Comic Sans MS"
FFontSize
Single precision (decimal number) properties getting or
setting font.size in points. Decimal fractions are permitted but
they may be rounded off by Windows to the nearest standard font size.
FFontSize = 8.5
FFontSize = 14
FFontSize = FFontSize * 2 'Make it bigger
FFontBold
Boolean property eg
FFontBold = True
FFontBold = False
FFontItalic
Boolean property eg
FFontItalic = True
FFontItalic = False
FFontUnderline
Boolean property eg
FFontUnderline = True
FFontUnderline = False
NNewpage
Method keyword with no arguments. Starts a new page.
DDrawWidth
Integer property, gives width of borders and lines produced
by LLine and CCircle. Unit is the pixel, which can be unpredictable with
printer drivers, but usually looks like what you would get with a sharp pencil,
ie 0.1 mm.
Call LLine(x1, y1, x2, y2 [, color, box_specs] )
Part
Description
x1, y1, x2, y2
Required. Single-precision co-ordinate values for the
start and end of the line. If box_specs are given, these will give
diagonally opposite corners of the resulting rectangular box.
color
Optional. Long integer value indicating the color.
Default is the current "FForeColor". You can use the RGB function to assign
this.
box_specs
Optional. String. Default value is "",
zero-length string indicating an ordinary line. There are only 2
possible box specs, "B" for an empty box, and "BF" for a box filled
in with the FForeColor
Call CCircle(x, y, radius [, color
] )
Part
Description
x, y
Required. Single-precision co-ordinate values for the
centre, in mm.
radius
Required. Single-precision radius length in mm.
color
Optional. Long integer value indicating the color.
Default is the current "FForeColor". You can use the RGB function to assign
this.
FForeColor
Long integer color property, the main drawing
and text color of the page. eg:
FForeColor = RGB(0, 160, 0) 'To
print green text and graphics
FFillColor
Long integer color property. When used, fills in enclosed boxes and
circles. Normally scripted by assigning it just before a LLine or
CCircle statement. PreRequisite: the FFillStyle
property - see next, must be assigned to something other than zero for
FFillColor to have any effect. Default FFillColor
is 0 = black. eg
' to draw a circle filled with a blue diagonal
cross-hatching pattern
FFillStyle = 7
FFillColor = RGB(0, 0, 255)
Call CCircle(40, 200, 20)
FFillStyle
Integer codes for patterns which can be used for filling in boxes and
circles. Normally scripted by assigning it just before a LLine or CCircle
statement.
| Setting | Description |
| 0 | Solid |
| 1 | (Default) Transparent |
| 2 | Horizontal Line |
| 3 | Vertical Line |
| 4 | Upward Diagonal |
| 5 | Downward Diagonal |
| 6 | Cross |
| 7 | Diagonal Cross |
Remarks
When FillStyle is set to 1 (Transparent), the FillColor property is ignored
Email: sales@pixieware.com