Windows test prints differing in size - and what is 'Enable Advanced Printing Features' all about?

This is a question regarding Windows test prints differing in size when one comes from a workstation printing to a  network attached printer, and a test page being printed directly from the print server itself. I will use an HP  Color LaserJet 4600dtn as an example, but I have seen this issue on various models. The answer may be stupidly simple, but the strange world of printing eludes me sometimes.

When printing a test page from my workstation, I map to the printer using \\servername\printername and I  immediately go to the print queue, select Properties and print a Windows test page and it spools to a size of about  82 KB and then prints.

When I log into the print server through Terminal Services and go to the same printer, select properties and print  a Windows test page, it spools to only about 23 KB and then prints.

I verified that all files (.dlls and such) and information are listed as the same on both of the test prints. I also verified the default settings one both the server and workstation pring queue are the same, such as dpi, etc...

When the print queue is built on the server (and the workstation), by default "Enable Advanced Printing Features"  is enabled, which I believe enables EMF spooling - someone please correct me if I am wrong here. However, the Print  Processor Default Datatype is set to RAW. So does one take precedence or do RAW and EMF not conflict. By looking at the test prints, it states the data format is RAW, so if that's the case, is having "Enable Advanced PRinting  Features" creating additional overhead?

It's difficult finding some straight answers on this subject from both Microsoft and HP knowledge bases. The best  I've been able to do is piecing together bits of information from different places and now it's just starting to  get confusing.

I've never found a good answer as to what "Enable Advanced Printing Features" is all about...Thanks!
Who is Participating?
Scott_WillcocksConnect With a Mentor Commented:
enable advanced printing features enable you to do these options. Inwindows 2k

Print multiple pages on one page. Save paper by shrinking several pages and printing them on the same page.
Print multiple copies. Get multiple-copy support even for printers that ordinarily handle only one copy.
Print pages in the correct order. Save the hassle of shuffling pages for those printers that print pages in reverse order. Windows 2000 now automatically corrects this.

and that is all advanced printing does.

so yes enable advanced printing will create more overhead

check thhis link for the difference between RAW and EMF

the reason when you send a print to the printer from the server to the printer it's size is smaller is Because of the way windows handle printing when you send a print job from a local printer it spools it with localpsl.dll this dll only sends the incformation that is needed it's a stripped down version of the remote print spoolers. The remote print spooler has the print router information how to route the print information and where to send any errors you don't need this information with the local print jobs.

below is a break down on printing and spooling.

SO the reason the print jobs are larger from remote clients is it uses a different dll when printing from a local pc or server than when using a remote printer.

Print Process
When print requests are made to a print device that is available through a print server the following happens:

By default, the disk files used by the spooler are contained in %SystemRoot%\System32\spool\printers. Each spooled print job results in two files:

The spool file, which is the print job and has a file extension of .spl.
The shadow file, with a file extension of .shd, which contains the information needed to print the job (things like the priority, the name of the sending user, and the name and location of the physical printer).
The collection of spool files in the spooler directory is called the queue. Every computer that has an installed printer, whether it’s attached locally or remotely, uses the same default location for the queue. If a print job is sent to a remote printer, the local spooler accepts the files and then ships them to the remote computer. In the end, the disk files sit on the computer that has the printer attached waiting to be sent to the physical printer.

The Print Provider
The print provider is responsible for matching your configuration options to the job that’s being sent to the printer. There are two print providers, one for local printing and one for remote printing.

The local print provider (localspl.dll) is found in \%SystemRoot%\system32 and operates only when a print job is sent to a local printer. It performs these chores:

It writes the two files to the spooler (the job file and the shadow file).
It processes the configuration item for a separator page if there is one.
It determines which print processor is needed to take care of the job’s data type and passes the job along to that print processor (see the section on print processors coming up soon in this chapter).
It passes the print job to the print monitor for the target port (information on print monitors is found in this chapter).
The remote print provider wakes up when a Windows computer sents a print job to a remote print server. There are actually two remote print providers: win32spl.dll for Windows print servers; and nwprovau.dll for NetWare print servers. Both files are in the \%SystemRoot%\system32 directory.

If the print job is going to a Windows print server, the print provider turns the file over to the print router (discussed next). If the print job is going to a NetWare server, the job is sent to the NetWare redirector, which passes the job to the NetWare print server.

The Print Router
The print router sits between the client and the print server (even if the print server is also the client because the job is going to a local printer) and it is implemented with winspool.drv which is in the \%SystemRoot%\system32 subdirectory.

The print router has two important jobs:

It has to find the printer the print job needs.
It has to make sure there’s a printer driver for that printer on the print server.
After the print router has located the printer, it searches the print server to make sure there’s an appropriate driver for the printer. If not, it sends one. If the print server is not the same computer as the sending computer (in other words, it’s not a local print process) it copies the spooled print file from the local hard drive to the spooler of the print server.

The Print Monitors
Another component in the Windows NT 4 printing process is the print monitor. This component controls the port and the communications between the port and the spooler. It performs these specific tasks:

Accesses the port and sends the job to the port
Releases the port at the end of a print job
Notifies the spooler when the port is released so the spooler can delete the job from the queue and send the next job
Monitors the printer to see if there are errors being returned

Local Print Monitor
The local print monitor is named localmon.dll and it is in the \%SystemRoot\System32 subdirectory. It controls local ports, but it defines the term “local ports” in its own way. To the local print monitor, every item in the following list is a local port:

The locally attached parallel port(s)
The locally attached serial port(s)
A file (the print monitor prompts for a name if you select this port for a print job)
An explicit filename (every job sent to that filename overwrites the last print job sent there)
A UNC designation for a remote printer connection

Wicked_KoalaAuthor Commented:
Point value increased.
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.