XpsDocumentWriter.WritingPrintTicketRequired Event


The .NET API Reference documentation has a new home. Visit the .NET API Browser on docs.microsoft.com to see the new experience.

Occurs just before a Write or WriteAsync method adds a PrintTicket to a document or print queue.

Namespace:   System.Windows.Xps
Assembly:  System.Printing (in System.Printing.dll)

Public Overrides Event WritingPrintTicketRequired As WritingPrintTicketRequiredEventHandler

WritingPrintTicketRequired enables an event handler to substitute a new PrintTicket for the one that is passed to the write operation.

The following four Write and WriteAsync methods do not call the WritingPrintTicketRequired event:

The following example shows how to use the WritingPrintTicketRequired event.

' ---------------- PrintMultipleFixedContentDocuments ----------------
''' <summary>
'''   Prints the content of a multiple fixed document sequence.</summary>
''' <param name="pq">
'''   The print queue to print to.</param>
''' <param name="async">
'''   true to print asynchronously; false to print synchronously.</param>
Public Sub PrintMultipleFixedContentDocuments(ByVal pq As PrintQueue, ByVal async As Boolean)
	' Create a multiple document FixedDocumentSequence.
	Dim fds As FixedDocumentSequence = _wpfContent.LoadFixedDocumentSequenceFromDocument()

	' Create a document writer to print to.
	Dim xdwPrint As XpsDocumentWriter = GetPrintXpsDocumentWriter(pq)

	' Set the event handler for creating print tickets for
	' each document within the fixed document sequence.
	AddHandler xdwPrint.WritingPrintTicketRequired, AddressOf MultipleFixedContentDocuments_WritingPrintTicketRequired
	_firstDocumentPrintTicket = 0

	' Print either asynchronously or synchronously.
	If async Then
		PrintMultipleFixedContentDocumentsAsync(xdwPrint, fds)
		PrintMultipleFixedContentDocuments(xdwPrint, fds)
	End If
End Sub ' end:PrintMultipleFixedContentDocuments()

The event handler is created in the following example.

' ----- MultipleFixedContentDocuments_WritingPrintTicketRequired -----
''' <summary>
'''   Creates a PrintTicket event handler for
'''   printing a FixedDocumentSequence.</summary>
Private Sub MultipleFixedContentDocuments_WritingPrintTicketRequired(ByVal sender As Object, ByVal e As WritingPrintTicketRequiredEventArgs)
	If e.CurrentPrintTicketLevel = PrintTicketLevel.FixedDocumentSequencePrintTicket Then
		' Create a PrintTicket for the FixedDocumentSequence. Any
		' PrintTicket setting specified at the FixedDocumentSequence
		' level will be inherited by lower level (i.e. FixedDocument or
		' FixedPage) unless there exists lower level PrintTicket that
		' sets the setting differently, in which case the lower level
		' PrintTicket setting will override the higher level setting.
		Dim ptFDS As New PrintTicket()
		ptFDS.PageOrientation = PageOrientation.Portrait
		ptFDS.Duplexing = Duplexing.TwoSidedLongEdge
		e.CurrentPrintTicket = ptFDS

	ElseIf e.CurrentPrintTicketLevel = PrintTicketLevel.FixedDocumentPrintTicket Then
		' Use different PrintTickets for different FixedDocuments.
		Dim ptFD As New PrintTicket()

		If _firstDocumentPrintTicket <= 1 Then
			' orientation.  Since the PrintTicket at the
			' FixedDocumentSequence level already specifies portrait
			' orientation, this FixedDocument can just inherit that
			' setting without having to set it again.
			ptFD.PageOrientation = PageOrientation.Portrait
			ptFD.OutputColor = OutputColor.Monochrome
			_firstDocumentPrintTicket += 1

		Else ' if (_firstDocumentPrintTicket > 1)
			' orientation.  Since the PrintTicket at the
			' FixedDocumentSequence level already specifies portrait
			' orientation, this FixedDocument needs to set its
			' PrintTicket with landscape orientation in order to
			' override the higher level setting.
			ptFD.PageOrientation = PageOrientation.Landscape
			ptFD.OutputColor = OutputColor.Color
		End If

		e.CurrentPrintTicket = ptFD
	End If ' end:else if (CurrentPrintTicketLevel==FixedDocumentPrintTicket)

	' Even though we don't show code for specifying PrintTicket for
	' the FixedPage level, the same inheritance-override logic applies
	' to FixedPage as well.

End Sub ' end:MultipleFixedContentDocuments_WritingPrintTicketRequired()

.NET Framework
Available since 3.0
Return to top