System.Drawing.Printing.PrintDocument很慢

时间:2013-12-17 21:00:49

标签: c# printing reporting-services

我有一个需要打印图元文件的应用程序。元文件是SSRS报告的呈现。我正在使用System.Drawing.Printing.PrintDocument类来打印报告。这是我的班级正在进行打印:

public class EMFPrinter
{
    private IList<Stream> m_streams;
    private string printerName;
    private int m_currentPageIndex;

    public EMFPrinter(IList<Stream> reportstreams, string printer)
    {
        m_streams = reportstreams;
        printerName = printer;
        m_currentPageIndex = 0;
    }

    public void Print()
    {
        PrintDocument printDoc = new PrintDocument();
        printDoc.PrinterSettings.PrinterName = printerName;
        printDoc.PrintPage += new PrintPageEventHandler(PrintPage);
        printDoc.Print();
    }

    private void PrintPage(object sender, PrintPageEventArgs ev)
    {
        Metafile pageImage = new Metafile(m_streams[m_currentPageIndex]);
        ev.Graphics.DrawImage(pageImage, ev.PageBounds);
        m_currentPageIndex++;
        ev.HasMorePages = (m_currentPageIndex < m_streams.Count);
    }
}

如果我从桌面(Windows 8)运行它,它运行得很好。如果我尝试从需要运行的服务器(Windows Server 2008 R2)运行它,它适用于某些打印机,但我需要打印的打印机是HP LaserJet 1536dnf,当我尝试打印时从服务器到它它真的需要大约五分钟来打印。如果我尝试从桌面打印到同一台打印机,它会立即打印。如果我尝试从某个应用程序(如油漆)从服务器打印到该打印机,则立即打印。

是什么原因导致我的代码需要这么长时间才能从服务器打印到此打印机?

1 个答案:

答案 0 :(得分:1)

这最终成为打印驱动程序问题。经过一段时间的战斗后,我下载了最新的打印驱动程序并将其安装在服务器上。然后,我使用新的打印驱动程序将打印机安装在服务器上,并将其设置为具有IP地址端口的本地打印机。这解决了这个问题。