首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在PrintQueue中嘲弄.NET

在PrintQueue中嘲弄.NET
EN

Stack Overflow用户
提问于 2014-07-19 08:50:05
回答 1查看 838关注 0票数 1

需要对System.Printing.PrintQueue进行模拟以进行一些测试。目前,当我试图为可能存在的虚拟打印机(新的PrintQueue (新的PrintServer(),"Microsoft文档编写器“)创建PrintServer)时,我遇到了这个错误:

代码语言:javascript
复制
System.Printing.PrintQueueException: PrintTicket provider failed to bind to printer. Win32 error: -2147467231
    at MS.Internal.Printing.Configuration.PTProvider..ctor(String deviceName, Int32 maxVersion, Int32 clientVersion)
   at MS.Internal.Printing.Configuration.PTProviderBase.Create(String deviceName, Int32 maxVersion, Int32 clientVersion)
   at System.Printing.PrintTicketManager..ctor(String deviceName, Int32 clientPrintSchemaVersion)
   at System.Printing.PrintQueue.GetPrintCapabilities()

注意,错误与缺少打印机无关。我可以使用赝品在堆栈顶部的PrintTicket,但它绝对不清楚是哪种方法抛出。PrintQueue不是托管类(驻留在PrintQueue.cpp中)。有什么想法吗?

编辑

谷歌搜索了一下,但还是没有找到解决这个问题的方法:https://connect.microsoft.com/VisualStudio/feedback/details/690455/printqueue-getprintcapabilities-throws-when-incorrect-driver-is-configured-for-printer-on-print-server http://www.infragistics.com/community/forums/t/50736.aspx http://petterisbetter.com/michael/index.php/2008/09/29/printticket-provider-failed-to-retrieve-

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-05 08:51:42

解决这个问题需要提取和实现一些“部分”接口。

代码语言:javascript
复制
/// <summary>
/// Contract for PrintCapabilities
/// </summary>
public interface IPrintCapabilities
{
    /// <summary>
    /// Gets CollactionCapability.
    /// </summary>
    IEnumerable<Collation> CollationCapability { get; }

    /// <summary>
    /// Gets MaxCopyCount.
    /// </summary>
    int? MaxCopyCount { get; }

    /// <summary>
    /// Gets OrientedPageMediaHeight.
    /// </summary>
    double? OrientedPageMediaHeight { get; }

    /// <summary>
    /// Gets OrientedPageMediaWidth.
    /// </summary>
    double? OrientedPageMediaWidth { get; }

    /// <summary>
    /// Gets PageMediaSizeCapability.
    /// </summary>
    IEnumerable<PageMediaSize> PageMediaSizeCapability { get; }

    /// <summary>
    /// Gets PageOrientationCapability.
    /// </summary>
    IEnumerable<PageOrientation> PageOrientationCapability { get; }

    /// <summary>
    /// Gets DuplexingCapability.
    /// </summary>
    IEnumerable<Duplexing> DuplexingCapability { get; }

    /// <summary>
    /// Gets InputBinCapability.
    /// </summary>
    IEnumerable<InputBin> InputBinCapability { get; }

    /// <summary>
    /// Gets OutputColorCapability.
    /// </summary>
    IEnumerable<OutputColor> OutputColorCapability { get; }

    /// <summary>
    /// Gets PageOrderCapability.
    /// </summary>
    IEnumerable<PageOrder> PageOrderCapability { get; }

    /// <summary>
    /// Gets StaplingCapability.
    /// </summary>
    IEnumerable<Stapling> StaplingCapability { get; }
}

/// <summary>
/// Contract for PrintQueue
/// </summary>
public interface IPrintQueue
{
    /// <summary>
    /// Gets IsOffline flag.
    /// </summary>
    bool IsOffline { get; }

    /// <summary>
    /// Gets FullName.
    /// </summary>
    string FullName { get; }

    /// <summary>
    /// Refreshes PrintQueue.
    /// </summary>
    void Refresh();

    /// <summary>
    /// Gets or sets DefaultPrintTicket.
    /// </summary>
    IPrintTicket DefaultPrintTicket { get; set; }

    /// <summary>
    /// Gets PrintCapabilities.
    /// </summary>
    /// <returns></returns>
    IPrintCapabilities GetPrintCapabilities();
}

/// <summary>
/// Contract for PrintQueueCollection.
/// </summary>
public interface IPrintQueueCollection : IEnumerable
{
}

/// <summary>
/// Interface that describes all classes implementing PrintServer operations.
/// </summary>
public interface IPrintServer
{
    /// <summary>
    /// Gets the collection of print queues of the specific types.
    /// </summary>
    /// <param name="enumerationFlag">Array of types of print queues.</param>
    /// <returns>Print queues collection.</returns>
    IPrintQueueCollection GetPrintQueues(EnumeratedPrintQueueTypes[] enumerationFlag);

    /// <summary>
    /// Returns a reference of default print queue of LocalPrintServer.
    /// </summary>
    /// <returns>Print queue.</returns>
    IPrintQueue GetDefaultPrintQueue();
}

/// <summary>
/// Contract for PrintTicket
/// </summary>
public interface IPrintTicket
{
    /// <summary>
    /// Gets or sets PageOrientation.
    /// </summary>
    PageOrientation? PageOrientation { get; set; }

    /// <summary>
    /// Gets or sets Duplexing.
    /// </summary>
    Duplexing? Duplexing { get; set; }

    /// <summary>
    /// Gets or sets Stapling.
    /// </summary>
    Stapling? Stapling { get; set; }

    /// <summary>
    /// Gets or sets PageOrder.
    /// </summary>
    PageOrder? PageOrder { get; set; }

    /// <summary>
    /// Gets or sets OutputColor.
    /// </summary>
    OutputColor? OutputColor { get; set; }

    /// <summary>
    /// Gets or sets Collation.
    /// </summary>
    Collation? Collation { get; set; }

    /// <summary>
    /// Gets or sets PageMediaSize.
    /// </summary>
    PageMediaSize PageMediaSize { get; set; }
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24838538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档