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 … >元素,并且 属性nullOutputColorCapability值为 。 PrintCapabilities 文档必须符合 打印架构

PrintCapabilities 使应用程序能够获取打印机的功能,而无需直接读取 XML Stream 对象。

适用于家庭和企业的文件和照片打印机的所有最常用的功能都由 PrintCapabilities 类封装。 但是 ,打印架构 定义了更多不太常见的功能,可以扩展它来处理特殊打印设备的功能。 因此,尽管 PrintTicket 无法继承 和 PrintCapabilities 类,但你可以扩展打印架构以识别 在 或 PrintCapabilities 类中PrintTicket未考虑的打印设备功能。

注意PrintCapabilities使用将 PrintCapabilities 文档 (作为 Stream) 参数的构造函数创建对象时,整个文档将存储在 对象的非公共字段中,包括其中表示不由 类的任何公共属性PrintCapabilities表示的不太常见的功能的 XML 元素。 事实上,如果生成 PrintCapabilities 文档的驱动程序使用的是 打印架构的专用扩展,则私有定义的标记也会存储为非公共 PrintCapabilities 文档的一部分。

注意

命名空间中的 System.Printing 类不支持在 Windows 服务或 ASP.NET 应用程序或服务中使用。 尝试从这些应用程序类型之一使用这些类可能会产生意外问题,例如服务性能降低和运行时异常。

如果要从Windows 窗体应用程序打印,请参阅 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)

适用于