We have an application we run on Windows NT and Windows 2000 servers (we are finally just upgrading to 2000). This application has a number of components, but we have a question that is related to 2 of them that handle printing specifically.
The first of these components creates PS files from PS data it finds in an MQ Series queue. It saves to a UNC, although the \\server\share\file.ps is currently local to the server upon which the component is running.
The second program copies those to a printer via that printer's UNC (which is part of the filename). These printers are across the network.
These PS files can often be relatively big (1-2 MB) because they have embedded Asian language fonts. At the same time, the reason they have these fonts is that they are destined for printers in Asian countries. The networking to these countries is pretty poor and it can take 5-10 minutes to send the file to the remote printer. That's a problem when we're sending thousands of files in a day.
We can't reduce the content of the PS file, but we think we could compress the file as we send it across the network. The files compress to about 1/3 of their original size when we zip them.
We are thinking of having the first program saves to a remote UNC, and running the second program on those remote servers (the servers being in the same office as the printers). We might even be able to do this with a workstation.
These components were written in Visual C/C++. We originally wrote them in VS v6.0, but we're now working with it within the Visual Studio .Net framework (but it's not managed code or anything). These two components run as Windows services (they have the necessary service code in them).
We're rather not purchase a vendor DLL if we don't need to and we would like to know if there is a Windows API for compressing/decompressing data or files already available that we could test and use?