我有一个网页可以激活打印机上的打印作业。这适用于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();
答案 0 :(得分:4)
打印机位于另一台计算机上。 PrintDocument
用于桌面应用程序,而不是Web应用程序。
要在客户端上打印,您需要使用JavaScript,并且只能打印客户端计算机上已有的文档。我不确定是在客户端上打印的方法。您可以显示“打印”对话框,让用户自己打印文件。
答案 1 :(得分:0)
Silverlight 4可以打印。但是,它仅限于正确打印1页,如果一个启用HasMorePages参数,它会变得疯狂并用无尽的文档填充打印作业......我正在试图弄清楚为什么会这样。 Here
答案 2 :(得分:0)
我遇到了同样的问题。有人告诉我把你的代码放在这里:
using (WindowsIdentity.GetCurrent().Impersonate())
{
// code here
}
它允许使用特定的用户设置,而不是该特定打印机的ASP.NET设置。
此代码已将其输入打印机,但现在我遇到了打印机打印机的多个副本的问题。