从网页发送文档到打印机

时间:2010-03-25 18:53:41

标签: c# asp.net printing

我有一个网页可以激活打印机上的打印作业。这适用于localhost环境,但在将应用程序部署到Web服务器时不起作用。我正在使用.net System.Drawing.Print命名空间中的PrintDocument类。我现在假设打印机必须可用于远程服务器上的应用程序?关于如何让它工作的任何建议?

PrintDocument pd = new PrintDocument();
PaperSource ps = new PaperSource();
pd.DefaultPageSettings.PaperSize = 
    new System.Drawing.Printing.PaperSize("Custom", 1180, 850);
pd.PrintPage += new PrintPageEventHandler
                    (this.pd_PrintPage);

// Set your printer's name.  Obtain from
// System's Printer Dialog Box. 
pd.PrinterSettings.PrinterName =
    "Okidata ML 321 Turbo/D (IBM)";


//PrintPreviewDialog dlgPrintPvw = new PrintPreviewDialog();
//dlgPrintPvw.Document = pd;
//dlgPrintPvw.Focus();
//dlgPrintPvw.ShowDialog(); 

pd.Print();

3 个答案:

答案 0 :(得分:4)

打印机位于另一台计算机上。 PrintDocument用于桌面应用程序,而不是Web应用程序。

要在客户端上打印,您需要使用JavaScript,并且只能打印客户端计算机上已有的文档。我不确定在客户端上打印的方法。您可以显示“打印”对话框,让用户自己打印文件。

答案 1 :(得分:0)

Silverlight 4可以打印。但是,它仅限于正确打印1页,如果一个启用HasMorePages参数,它会变得疯狂并用无尽的文档填充打印作业......我正在试图弄清楚为什么会这样。 Here

答案 2 :(得分:0)

我遇到了同样的问题。有人告诉我把你的代码放在这里:

using (WindowsIdentity.GetCurrent().Impersonate())
{
    // code here
}      

它允许使用特定的用户设置,而不是该特定打印机的ASP.NET设置。

此代码已将其输入打印机,但现在我遇到了打印机打印机的多个副本的问题。