PostScript printers communicating over serial lines use control-D as an end of job indicator. The host computer should then wait for the printer to send a control-D back to indicate that the job has finished. Managing the serial protocol between host and printer should be done by some form of print service, but if you're unsure whether your print service is doing it, it's an idea to send one yourself.
PC type computers frequently do not have any kind of printer manager and applications end up sending control-D characters to the printer, sometimes before and after a job. PC applications frequently embed a control-D as the first character in the print file, presumably to flush out any other jobs, and thereby breaking the Adobe Document Structuring Conventions. There is a way to turn off generation off the control-D in Windows (anybody know it?).
According to the PRINTERS.WRI file that is included with MS Windows 3.x and up, you can place a line
CtrlD=0
in the WIN.INI sections for any postscript printers for which you wish to supress the Control-D generation. This usually works as long as you're using a specific printer, i.e. Apple LaserWriter, QMS820, etc]. However if you use the generic ``PostScript printer'' driver, it does not work. There is a freeware program called ctrld that will let users select if a given ps driver should output control-D's or not. It can be found at ftp.cica.indiana.edu in the file ftp/pub/pc/win3/misc/ctrld10.zip.
The shareware package WLPRSPL (an LPR spooler for Windows) includes a convenient utility program for listing the relevant printers and turning the option off or on.
If you want to prevent applications from doing this, you could use a spooler which would look at the end of every outgoing file and drop the control-D on the end if there happened to be one.
If you want a spooler, check out lprps.