PrintCapabilities 類別

定義

定義印表機的功能。

public ref class PrintCapabilities sealed
public sealed class PrintCapabilities
type PrintCapabilities = class
Public NotInheritable Class PrintCapabilities
繼承
PrintCapabilities

範例

下列範例示範如何判斷特定印表機的功能,以及如何設定列印工作來利用它們。

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

備註

PrintCapabilities物件是一種容易使用的特定 XML 檔案類型標記法,稱為 PrintCapabilities 檔。 後者是印表機功能及其目前設定的快照集。 例如,如果印表機支援色彩列印,則檔會有一個 <PageOutputColor … > 元素,可設定色彩輸出的處理方式。 專案接著會由 OutputColorCapability 物件的 屬性 PrintCapabilities 表示。 如果印表機不支援色彩,則檔中沒有 <PageOutputColor … > 元素,而 屬性的值 OutputColorCapabilitynull 。 PrintCapabilities 檔必須符合 列印架構

類別 PrintCapabilities 可讓您的應用程式取得印表機的功能,而不需要直接讀取 XML Stream 物件。

檔案和相片印表機的所有最熱門功能,適用于家庭和企業,都會由 PrintCapabilities 類別封裝。 但 列印架構 會定義更多、較不常見的功能,而且可以擴充以處理特殊列印裝置的功能。 因此,雖然 PrintTicket 無法繼承 和 PrintCapabilities 類別,但您可以擴充列印架構,以辨識未在 或 PrintCapabilities 類別中考慮的 PrintTicket 列印裝置功能。

注意PrintCapabilities使用採用 PrintCapabilities 檔的建構函式建立物件時, (做為 Stream) 參數,該整個檔會儲存在 物件中的非公用欄位中,包括其中表示類別任何公用屬性 PrintCapabilities 未表示的較不常見功能的 XML 元素。 事實上,如果產生 PrintCapabilities 檔的驅動程式使用 列印架構的私人延伸模組,該私用定義的標記也會儲存為非公用 PrintCapabilities 檔的一部分。

警告

命名空間內的 System.Printing 類別不支援在Windows服務或 ASP.NET 應用程式或服務中使用。 嘗試從其中一個應用程式類型內使用這些類別可能會產生非預期的問題,例如服務效能降低和執行時間例外狀況。

如果您想要從Windows Forms應用程式列印,請參閱 System.Drawing.Printing 命名空間。

建構函式

PrintCapabilities(Stream)

使用指定印表機功能並符合 XML 列印結構描述的 XML 資料流 (包含 PrintCapabilities 文件),初始化 PrintCapabilities 類別的新執行個體。

屬性

CollationCapability

取得或設定值集合,指出印表機是否能將輸出自動分頁。

DeviceFontSubstitutionCapability

取得值集合,這個值可識別印表機是否會將以裝置內建的字型替換為電腦中的字型,以及其替換方式。

DuplexingCapability

取得值集合,這個值可識別印表機是否執行雙面列印,以及其執行方式。

InputBinCapability

取得值集合,這個值表示要使用哪個輸入紙匣。

MaxCopyCount

取得值,這個值表示印表機在單一列印工作中可以包含的最大複本數目。

OrientedPageMediaHeight

取得值,這個值表示頁面上可做為影像之區域的高度,而高度是指相對於頁面方向的垂直維度。

OrientedPageMediaWidth

取得值,這個值表示頁面上可做為影像之區域的寬度,而寬度是指相對於頁面方向的水平維度。

OutputColorCapability

取得值集合,這個值指定印表機可以彩色和灰階列印內容的方式。

OutputQualityCapability

取得值集合,這個值表示印表機支援的輸出品質類型。

PageBorderlessCapability

取得值集合,這個值表示印表機是否可以在媒體的邊緣上列印。

PageImageableArea

取得物件,這個物件表示印表機可以使用的頁面區域。

PageMediaSizeCapability

取得 PageMediaSize 物件的集合,這個物件識別印表機所支援的紙張和媒體大小。

PageMediaTypeCapability

取得值集合,這個值識別印表機支援的紙張和其他媒體類型。

PageOrderCapability

取得值集合,這個值指出印表機是否能夠以由前到後、由後到前或兩者併用的方法來列印多頁文件。

PageOrientationCapability

取得值集合,這個值識別印表機支援的頁面方向類型。

PageResolutionCapability

取得 PageResolution 物件集合,這個值識別印表機支援的頁面解析度層次。

PageScalingFactorRange

取得最大和最小百分比,使印表機可以據此放大或縮小頁面上的列印影像。

PagesPerSheetCapability

取得整數集合,其中的每個值識別使用者可以選擇在紙張單面上列印的頁面數目。

PagesPerSheetDirectionCapability

取得值集合,這個值識別印表機支援用來表示在紙張單面上列印多頁的模式。

PhotoPrintingIntentCapability

取得值集合,這個值識別印表機支援的相片列印品質選項。

StaplingCapability

取得值集合,這個值識別印表機支援的自動裝訂類型。

TrueTypeFontModeCapability

取得值集合,這個值識別印表機支援的 TrueType 字型處理方式。

方法

Equals(Object)

判斷指定的物件是否等於目前的物件。

(繼承來源 Object)
GetHashCode()

做為預設雜湊函式。

(繼承來源 Object)
GetType()

取得目前執行個體的 Type

(繼承來源 Object)
MemberwiseClone()

建立目前 Object 的淺層複製。

(繼承來源 Object)
ToString()

傳回代表目前物件的字串。

(繼承來源 Object)

適用於