XpsDocumentWriter.WritingPrintTicketRequired XpsDocumentWriter.WritingPrintTicketRequired XpsDocumentWriter.WritingPrintTicketRequired XpsDocumentWriter.WritingPrintTicketRequired Event

Definition

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

public:
 override event System::Windows::Documents::Serialization::WritingPrintTicketRequiredEventHandler ^ WritingPrintTicketRequired;
public override event System.Windows.Documents.Serialization.WritingPrintTicketRequiredEventHandler WritingPrintTicketRequired;
member this.WritingPrintTicketRequired : System.Windows.Documents.Serialization.WritingPrintTicketRequiredEventHandler 
Public Overrides Custom Event WritingPrintTicketRequired As WritingPrintTicketRequiredEventHandler 

Examples

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 void PrintMultipleFixedContentDocuments(PrintQueue pq, bool async)
{
    // Create a multiple document FixedDocumentSequence.
    FixedDocumentSequence fds =
        _wpfContent.LoadFixedDocumentSequenceFromDocument();

    // Create a document writer to print to.
    XpsDocumentWriter xdwPrint = GetPrintXpsDocumentWriter(pq);

    // Set the event handler for creating print tickets for
    // each document within the fixed document sequence.
    xdwPrint.WritingPrintTicketRequired +=
        new WritingPrintTicketRequiredEventHandler(
            MultipleFixedContentDocuments_WritingPrintTicketRequired);
    _firstDocumentPrintTicket = 0;

    // Print either asynchronously or synchronously.
    if (async)
        PrintMultipleFixedContentDocumentsAsync(xdwPrint, fds);
    else
        PrintMultipleFixedContentDocuments(xdwPrint, fds);
}// end:PrintMultipleFixedContentDocuments()


' ---------------- 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)
	Else
		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 void MultipleFixedContentDocuments_WritingPrintTicketRequired(
                Object sender, WritingPrintTicketRequiredEventArgs e)
{
    if (e.CurrentPrintTicketLevel ==
            PrintTicketLevel.FixedDocumentSequencePrintTicket)
    {
        // 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.
        PrintTicket ptFDS = new PrintTicket();
        ptFDS.PageOrientation = PageOrientation.Portrait;
        ptFDS.Duplexing = Duplexing.TwoSidedLongEdge;
        e.CurrentPrintTicket = ptFDS;
    }

    else if (e.CurrentPrintTicketLevel ==
        PrintTicketLevel.FixedDocumentPrintTicket)
    {
        // Use different PrintTickets for different FixedDocuments.
        PrintTicket ptFD = new PrintTicket();

        if (_firstDocumentPrintTicket <= 1)
        {   // Print the first document in black/white and in portrait
            // 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++;
        }

        else // if (_firstDocumentPrintTicket > 1)
        {   // Print the second document in color and in landscape
            // 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;
        }

        e.CurrentPrintTicket = ptFD;
    }// 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:MultipleFixedContentDocuments_WritingPrintTicketRequired()


' ----- 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()

Remarks

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:

Applies to