Virtual Mac Printer
InExchange approaches Softage and asks us to help them with a usability issue they encountered in providing document management and billing services to customers using their bespoke (custom) application, InExchange Virtual Printer. In essence, the company needs a virtual printer driver for the Mac which will not only output the printed data as a postscript file – which was fairly straightforward – but will also automatically save the postscript file and upload it to an FTP server or HTTP address, retaining details of the user who had printed it. The customer also wants the system to store users’ account login details and passwords so that they will be spared the inconvenience of having to log in again each time they use the printer. Finally, each document needs to be saved with a unique name to allow the user to work with many documents simultaneously. For InExchange, this is a time sensitive task. As long as potential customers using Macs are unable to use Virtual Printer, the company is denying itself access to a significant proportion of the market. InExchange is a small but fast growing Swedish company whose goal is to improve information exchange between buyers and suppliers. They enable the transfer and sharing of business documents of all descriptions, but particularly invoices, delivery notes and statements of account. They are market leaders in helping businesses transition from hard copy invoices dispatched by post to electronic invoices transmitted over the internet. A key part of their attractiveness to customers is that they recognize not only that hard copies of invoices, delivery notes and receipts are needed for accounting and other purposes, but also that there will inevitably be considerable and avoidable disruption and expense if a company tries to migrate its accounting system to an entirely new package.
InExchange Virtual Printer is an innovative package allowing suppliers to generate invoices and other accounting documents from their own internal financial systems, producing them as electronic invoices rather than in hard copy. It achieves this by installing a virtual printer driver on the client’s computer or server, and then giving the client the option of selecting that virtual printer when printing invoices instead of the real printer in the client’s office. The client company’s internal accounting system notes that an invoice or other document has been produced and printed, and is oblivious to the fact that it exists only in soft copy. Virtual Printer sends a copy of the document to the client’s customer or supplier, and also saves a copy of the invoice in the client’s account along with a record of who posted the document and when. It has proven extremely popular with InExchange’s customers, and the company reports that the product has a 90% recommendation rate.
InExchange’s solution to those conflicting demands is InExchange Virtual Printer. At a stroke, this application greatly simplifies the invoicing process for any company, large or small. It also generates considerable savings for companies who issue large volumes of invoices, as there is no need for envelopes or stamps, and there a huge reduction in the manual labor involved in the billing process.
InExchange Virtual Printer was designed and built to be run on Windows based operating systems. This effectively excludes potential clients using Mac operating systems from becoming clients of the company, a shortcoming that InExchange identified and were eager to rectify.
The task of implementing a virtual driver for use on a Mac operating system is relatively straightforward, but converting the other aspects of the service offered by the Virtual Printer is clearly going to present a greater challenge. In order to make the system work for the Mac equipped customers, InExchange needs to enable the creation of a directory on the customer’s computer where the output of the printing process will first be saved as a temporary file and then, when the printing process is complete, automatically transferred to a File Transfer Protocol or FTP server. This dictates that the print output must be a postscript file which, when the printing job is complete, is uploaded to the FTP server or an HTTP endpoint and becomes a permanent record. The process also needs to capture the identity of the person who prints the virtual invoice, and ensure there is no unauthorized access to the server.
To ensure this, the application must ask for usernames and passwords during the transfer process but, to avoid the user having to input this information repeatedly, save that information to a config file. The final constraint is imposed by the likelihood that one individual within any given company might have to print many documents at the same time, and that he or she may well create a second document before the upload of the first document is complete. This imposes the requirements that the postscript file must have a unique name, and that the name be assigned automatically.
Tools and technologies
There are a number of implicit parts to InExchange’s request, requiring a variety of skills to deliver and fuse together to form a complete and fully functioning application. To accomplish this, Softage’s development staff utilize on their deep understanding of Xcode, GCC, PackageMaker and Bash Scripts to produce a product exactly meeting InExchange’s requirements. The entire task is completed inside a month, and to the customer’s complete satisfaction.