XpsDocumentWriter.WritingPrintTicketRequired イベント
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
Write または WriteAsync メソッドによって PrintTicket がドキュメントまたは印刷キューに追加される直前に発生します。
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
イベントの種類
例
WritingPrintTicketRequired イベントを使用する方法を次の例に示します。
// ---------------- 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
イベント ハンドラーは、次の例で作成します。
// ----- 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
注釈
WritingPrintTicketRequired を使用すると、イベント ハンドラーは、書き込み操作に渡されたものに新しい PrintTicket を置き換えます。
次の 4 つの Write メソッドと WriteAsync メソッドでは、 イベントは WritingPrintTicketRequired 呼び出されません。
Write(String)
Write(String、XpsDocumentNotificationLevel)
WriteAsync(String)
WriteAsync(String、XpsDocumentNotificationLevel)
適用対象
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET