This documentation is archived and is not being maintained.

PrintQueue.AddJob Method ()

Inserts a new (generically named) print job, whose content is a Byte array, into the queue.

Namespace: System.Printing
Assembly: System.Printing (in system.printing.dll)

public PrintSystemJobInfo AddJob ()
public PrintSystemJobInfo AddJob ()
public function AddJob () : PrintSystemJobInfo
Not applicable.

Return Value

A PrintSystemJobInfo that represents the print job and its status.

Use this method to write device specific information, to a spool file, that is not automatically included by the Microsoft Windows spooler. Of course, you need to know whether the spool file is Enhanced Metafile (EMF) or XML Paper Specification (XPS). If you prefer to work with the Stream API, you can use the PrintQueueStream class instead of this method.

After the AddJob method has been called, you must write a Byte array to the JobStream property of the PrintSystemJobInfo that is returned by AddJob or no print job is created. This array is what will print if the printer is working and is not paused.

Caution noteCaution:

If the JobStream is not closed with Close before the end of the thread in which AddJob is called, then an InvalidOperationException will occur when that thread ends because the spooler thread cannot gain control over the Stream object.

In the print queue's graphical user interface (GUI), the job will have the name "Print System Document". To give the job a different name, use AddJob(String).

Other ways to print in Windows Presentation Foundation (WPF) include the PrintDialog.PrintDocument method, which can be used with or without opening the dialog, and the many Write and WriteAsync methods of the XpsDocumentWriter.

The following example shows how to use AddJob to send a Byte array to a print queue. This code will only work with printers that can detect and print plain text. Some of them cannot.

// Create the printer server and print queue objects
LocalPrintServer localPrintServer = new LocalPrintServer();
PrintQueue defaultPrintQueue = LocalPrintServer.GetDefaultPrintQueue();

// Call AddJob
PrintSystemJobInfo myPrintJob = defaultPrintQueue.AddJob();

// Write a Byte buffer to the JobStream and close the stream
Stream myStream = myPrintJob.JobStream;
Byte[] myByteBuffer = UnicodeEncoding.Unicode.GetBytes("This is a test string for the print job stream.");
myStream.Write(myByteBuffer, 0, myByteBuffer.Length);

Windows 98, Windows Server 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

The Microsoft .NET Framework 3.0 is supported on Windows Vista, Microsoft Windows XP SP2, and Windows Server 2003 SP1.

.NET Framework

Supported in: 3.0