PrintTicket 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
定義列印工作的設定。
public ref class PrintTicket sealed : System::ComponentModel::INotifyPropertyChanged
public sealed class PrintTicket : System.ComponentModel.INotifyPropertyChanged
type PrintTicket = class
interface INotifyPropertyChanged
Public NotInheritable Class PrintTicket
Implements INotifyPropertyChanged
- 繼承
-
PrintTicket
- 實作
範例
以下範例說明如何判斷特定印表機的功能,以及如何配置列印工作以利用這些功能。
// ---------------------- GetPrintTicketFromPrinter -----------------------
/// <summary>
/// Returns a PrintTicket based on the current default printer.</summary>
/// <returns>
/// A PrintTicket for the current local default printer.</returns>
PrintTicket^ GetPrintTicketFromPrinter ()
{
PrintQueue^ printQueue = nullptr;
LocalPrintServer^ localPrintServer = gcnew LocalPrintServer();
// Retrieving collection of local printer on user machine
PrintQueueCollection^ localPrinterCollection = localPrintServer->GetPrintQueues();
System::Collections::IEnumerator^ localPrinterEnumerator = localPrinterCollection->GetEnumerator();
if (localPrinterEnumerator->MoveNext())
{
// Get PrintQueue from first available printer
printQueue = ((PrintQueue^)localPrinterEnumerator->Current);
} else
{
return nullptr;
}
// Get default PrintTicket from printer
PrintTicket^ printTicket = printQueue->DefaultPrintTicket;
PrintCapabilities^ printCapabilities = printQueue->GetPrintCapabilities();
// Modify PrintTicket
if (printCapabilities->CollationCapability->Contains(Collation::Collated))
{
printTicket->Collation = Collation::Collated;
}
if (printCapabilities->DuplexingCapability->Contains(Duplexing::TwoSidedLongEdge))
{
printTicket->Duplexing = Duplexing::TwoSidedLongEdge;
}
if (printCapabilities->StaplingCapability->Contains(Stapling::StapleDualLeft))
{
printTicket->Stapling = Stapling::StapleDualLeft;
}
return printTicket;
};// end:GetPrintTicketFromPrinter()
// ---------------------- GetPrintTicketFromPrinter -----------------------
/// <summary>
/// Returns a PrintTicket based on the current default printer.</summary>
/// <returns>
/// A PrintTicket for the current local default printer.</returns>
private PrintTicket GetPrintTicketFromPrinter()
{
PrintQueue printQueue = null;
LocalPrintServer localPrintServer = new LocalPrintServer();
// Retrieving collection of local printer on user machine
PrintQueueCollection localPrinterCollection =
localPrintServer.GetPrintQueues();
System.Collections.IEnumerator localPrinterEnumerator =
localPrinterCollection.GetEnumerator();
if (localPrinterEnumerator.MoveNext())
{
// Get PrintQueue from first available printer
printQueue = (PrintQueue)localPrinterEnumerator.Current;
}
else
{
// No printer exist, return null PrintTicket
return null;
}
// Get default PrintTicket from printer
PrintTicket printTicket = printQueue.DefaultPrintTicket;
PrintCapabilities printCapabilities = printQueue.GetPrintCapabilities();
// Modify PrintTicket
if (printCapabilities.CollationCapability.Contains(Collation.Collated))
{
printTicket.Collation = Collation.Collated;
}
if ( printCapabilities.DuplexingCapability.Contains(
Duplexing.TwoSidedLongEdge) )
{
printTicket.Duplexing = Duplexing.TwoSidedLongEdge;
}
if (printCapabilities.StaplingCapability.Contains(Stapling.StapleDualLeft))
{
printTicket.Stapling = Stapling.StapleDualLeft;
}
return printTicket;
}// end:GetPrintTicketFromPrinter()
' ---------------------- GetPrintTicketFromPrinter -----------------------
''' <summary>
''' Returns a PrintTicket based on the current default printer.</summary>
''' <returns>
''' A PrintTicket for the current local default printer.</returns>
Private Function GetPrintTicketFromPrinter() As PrintTicket
Dim printQueue As PrintQueue = Nothing
Dim localPrintServer As New LocalPrintServer()
' Retrieving collection of local printer on user machine
Dim localPrinterCollection As PrintQueueCollection = localPrintServer.GetPrintQueues()
Dim localPrinterEnumerator As System.Collections.IEnumerator = localPrinterCollection.GetEnumerator()
If localPrinterEnumerator.MoveNext() Then
' Get PrintQueue from first available printer
printQueue = CType(localPrinterEnumerator.Current, PrintQueue)
Else
' No printer exist, return null PrintTicket
Return Nothing
End If
' Get default PrintTicket from printer
Dim printTicket As PrintTicket = printQueue.DefaultPrintTicket
Dim printCapabilities As PrintCapabilities = printQueue.GetPrintCapabilities()
' Modify PrintTicket
If printCapabilities.CollationCapability.Contains(Collation.Collated) Then
printTicket.Collation = Collation.Collated
End If
If printCapabilities.DuplexingCapability.Contains(Duplexing.TwoSidedLongEdge) Then
printTicket.Duplexing = Duplexing.TwoSidedLongEdge
End If
If printCapabilities.StaplingCapability.Contains(Stapling.StapleDualLeft) Then
printTicket.Stapling = Stapling.StapleDualLeft
End If
Return printTicket
End Function ' end:GetPrintTicketFromPrinter()
備註
PrintTicket物件是一種易於操作的 XML 文件表示方式,稱為 PrintTicket 文件。 後者是一組指示印表機如何設定各種功能(如雙工、整理和釘書)。 例如,若要指示印表機開啟左上角的釘書機與釘書機列印工作,文件中會有一個 <JobStapleAllDocuments … > 元素指定 StapleTopLeft。 該元素又由 Stapling 物件的 PrintTicket 性質表示。 PrintTicket 文件必須符合 列印結構。
此 PrintTicket 類別讓您的應用程式能設定印表機的功能,而無需直接撰寫 XML Stream 物件。
家用與商業檔案與照片印表機最受歡迎的功能皆由該類別的特性 PrintTicket 代表。 但 列印架構 定義了更多較少見的功能,且可擴展至處理特殊列印設備的功能。 所以,雖然 PrintTicket and PrintCapabilities 類別無法繼承,但你可以擴充列印結構,來辨識 or PrintTicket 類別中未涵蓋PrintCapabilities的列印裝置特性。 註 當 PrintTicket 物件以 PrintTicket 文件(作為 Stream參數)的建構子建立時,整個文件會儲存在物件的非公開欄位中,包括其中表達較少見功能的 XML 元素,這些特徵並未被類別的任何公開屬性 PrintTicket 所代表。 事實上,如果產生 PrintTicket 文件的驅動程式使用了 Print Schema 的私人擴充,該私有定義的標記也會作為非公開 PrintTicket 文件的一部分儲存。
謹慎
System.Printing 命名空間中的類別不支援用於Windows服務或 ASP.NET 應用程式或服務中。 嘗試在這些應用程式類型中使用這些類別,可能會產生意想不到的問題,例如服務效能下降及執行時例外。
如果你想從 Windows Forms 應用程式列印,請參考 System.Drawing.Printing 命名空間。
建構函式
| 名稱 | Description |
|---|---|
| PrintTicket() |
初始化 PrintTicket 類別的新執行個體。 |
| PrintTicket(Stream) |
透過使用 XML 串流(包含 PrintTicket 文件)初始化該類別的新實例 PrintTicket ,該串流符合 XML 列印結構。 |
屬性
| 名稱 | Description |
|---|---|
| Collation |
取得或設定一個值,指示印表機是否會彙整輸出。 |
| CopyCount |
取得或設定列印工作的副本數量。 |
| DeviceFontSubstitution |
取得或設定一個值,指示印表機是否在列印工作中替換裝置字型而取代電腦字型。 |
| Duplexing |
取得或設定一個值,指示印表機在該列印工作中使用哪種雙面列印(若有的話)。 |
| InputBin |
會取得或設定一個值,指示要使用哪個輸入箱(紙托盤)。 |
| OutputColor |
取得或設定一個值,指示印表機如何處理有顏色或灰色調的內容。 |
| OutputQuality |
取得或設定一個值,表示列印作業的輸出品質。 |
| PageBorderless |
會取得或設定一個值,指示裝置是否將內容列印到媒體邊緣,或是在邊緣留下未列印的邊界。 |
| PageMediaSize |
取得或設定印表機用於列印工作的紙張(或其他媒介)的頁面尺寸。 |
| PageMediaType |
會取得或設定一個值,表示印表機在列印工作中使用的紙張或媒介種類。 |
| PageOrder |
取得或設定一個值,指示印表機是從前到後列印多頁,還是從前到後列印。 |
| PageOrientation |
取得或設定一個值,指示頁面內容在列印時的方向。 |
| PageResolution |
取得或設定印表機用於列印工作的頁面解析度等級。 |
| PageScalingFactor |
取得或設定印表機在頁面上放大或縮小列印影像的百分比。 |
| PagesPerSheet |
取得或設定紙張每面印刷的頁數。 |
| PagesPerSheetDirection |
取得或設定一個值,指示印表機如何排列多頁,分別印刷在一張紙的兩面。 |
| PhotoPrintingIntent |
取得或設定一個數值,以質性方式表示印表機用於列印照片的品質水準。 |
| Stapling |
取得或設定一個值,指示印表機是否以及在哪裡釘好多頁。 |
| TrueTypeFontMode |
取得或設定一個值,指示印表機如何處理使用 TrueType 字型的文字。 |
方法
| 名稱 | Description |
|---|---|
| Clone() |
建立一個可修改的克隆, PrintTicket製作該物件值的深度複製。 |
| Equals(Object) |
判斷指定的物件是否等於目前的物件。 (繼承來源 Object) |
| GetHashCode() |
做為預設哈希函式。 (繼承來源 Object) |
| GetType() |
取得目前實例的 Type。 (繼承來源 Object) |
| GetXmlStream() |
回傳MemoryStream一個物件,該物件以符合PrintTicket的 XML 串流形式代表 a 的屬性值。 |
| MemberwiseClone() |
建立目前 Object的淺層複本。 (繼承來源 Object) |
| SaveTo(Stream) |
透過符合PrintTicket的 XML 格式,將Stream設定儲存到物件中。 |
| ToString() |
傳回表示目前 物件的字串。 (繼承來源 Object) |
事件
| 名稱 | Description |
|---|---|
| PropertyChanged |
當任何變化的 PrintTicket 性質時發生。 |