The Leader in TIFF Imaging Solutions
ImageMAKER Faxbatch provides a robust set of tools to automate faxing from batch orientated Windows Print applications. If the application can print a document to a printer, using fax merge it can be automated to send the same document to a fax machine.
Three main components form the basis for our Faxbatch Solution: A Fax Print Driver, a Control Dialog Executable, and a OEM Supplied DLL. The print driver installs as a normal Windows print driver, and outputs pages to TIF, DCX, or PCX formats. The Control Dialog is a separate EXE application, spawned by the print driver on startup, and provides all of the User Interface screens. The OEM Supplied DLL is implemented as a simple DLL which is used to monitor the text stream during printing.
A second tier of components round out the picture. These components include a Cover Page Generator, Forms Merge Engine, and numerous Fax Viewers. These second tier components are not absolutely required to implement Faxbatch, but add considerable flexibility in providing a complete end-user solution.
Our two goals in providing Faxbatch extensions are: to work with as many applications as possible; and to minimize the amount of programming required to integrate fax support. To this end, we have included support for the following:
Embedded control codes within the print stream :
Control strings can embedded in the print stream, either as part of the report, or pre-pended as a separate page to the report. These control strings are then picked up by the OEM Supplied DLL out of the print stream. Control strings are identified either by a start and end sequence, or by a row/col position on the page.
Recognized control functions:
Using these methods should be sufficient to solve most fax enabling problems.
The following sections provide a detailed description of each of the component objects, an overview of how the process works, and recipes for enabling common applications.
The Print Driver translates Windows GDI calls into multi-paged fax images. It talks to the Control Dialog at start of each job, requesting the name of the file to create, and the name of the control string template definition file. It talks to the OEM Supplied DLL while formatting text, passing each text string in the print stream to the DLL before sending it through to the GDI for rendering onto the Fax Image.
The Control Dialog is provided by the Fax Server Vendor, and provides a simple addressing UI. This UI can also be set up to handle the Faxbatch setup information. The Control Dialog tells the print driver the name of the output tiff file.
The Fax Server is the ultimate destination for the burst fax jobs. The Fax Server is provied by the OEM vendor.
These are the burst jobs created under control of the Print Driver, and OEM supplied DLL.
A Behind the Scenes look at Fax Merging:
The following steps outline how an application is fax enabled:
1) Set up a sample print job .
A control string definition template is first selected (or defined). The user then goes about adding the control string information to the report These strings include a Fax Number, To field, and perhaps a start of job indicator.
2)Print the report to the fax print driver.
On startup, the print driver spawns a Control Dialog EXE. At this point the user optionally verifies that the correct string definition template file is selected, and chooses an output fax file name.
3) The print driver requests the OEM supplied DLL to parse the text stream.
All text is first sent to the OEM supplied DLL for parsing before being printed. The function call returns a control value, indicating ignore line, start a new job at start of page, start a new job at start of next page, or punt this page.
4) The control dialog adds the job to the fax server.
Once printing is complete, the control dialog places the burst jobs into the output fax server.
Control String Template Definition:
A sample control string definition template is minimally defined as follows:
File Format Definition:
Control Strings are defined by the OEM, and are
read and interpreted by the OEM supplied DLL.
[Start Sequence] [Maximum String Length] [Terminating Char String] [Terminating Char Set] [flags]
Position: [Row/Col/+-/Page] [Maximum String Length] [Start Offset] [Terminating Char Set]
Debugging a String Definition Template :
To help build a string table, the OEM supplied DLL should output all strings to a 'shadow dump' file. The sample utility outputs to a c:\temp\mm.txt file. If a particular token string is not being properly located, then looking at the shadow file is the first place to start.
Some applications, including WORD sometimes does odd things when sending the strings to the print driver. In normal cases, all strings are sent top to bottom, right to left. Any change in formatting (size,
Character font, other attribute changes) generally result in the text being broken down into multiple strings. To ensure that the token and user data all get passed in as one string, it helps to keep all formatting information constant. Should you have problems, try re-formatting the complete string to be a different font, or font size.
A 'don't print this page' anywhere on the page means that the current page will not be rendered to the output file, but that all control strings will still be interpreted. This is a great way to insert additional control information which you know will not be faxed.
Recipes for Fax Enabling Common Windows Applications:
Following are sample instructions for fax enabling common applications. Each of these examples demonstrates the flexibility of the Faxbatch toolset, in that little to no programming is required to achieve the desired result.
Mail Merge (Word processing, contact manager)
The print capture driver calls the OEM supplied DLL, which detects each 'end of job', in the print stream, and prepares a list of Tiff files and addresses to send to. At end of printing, the Control Dialog looks for and finds this control file, and submits all indicated jobs to the server.
Accounting Package (invoices, account statements, purchase orders)
The print capture calls the OEM supplied DLL, which detects each 'end of job', in the print stream, (based on a row/col position of a recognizable text string), and prepares the job list. The Control Dialog in turn process the job list at end of printing.