2012-11-06 73 views
0

我希望我的web应用程序在出现后自动打印出弹出页面,而不要求客户端选择打印机进行选择。没有对话框的ASP.Net打印

如何使用java-script或ajax处理ASP.Net中的无提示打印,或者对于这种情况最适合的解决方案是什么?

回答

0

你不能有很好的理由,如:

  • 用户应该随时都可以选择他们想要使用的打印机。

  • 用户应该随时都可以选择是否打印的东西还是不(想象一下,将不断飞出您的打印机,否则垃圾邮件)

+0

它可以使用ActiveX控制 – user1194842

+0

它也可能与Flash,Silverlight的或Java小程序来完成,但似乎并没有要你问什么来完成。这是否会在您拥有用户软件控制权的商业环境中使用? – Fishcake

+0

是的,这个应用程序是在一家公司,每天有大约300个分支和每天打印数千篇论文,所以它浪费时间让用户总是按下ctrl + P选择打印机为每张纸打印。我希望我可以罚款一个解决方案,因为它对我来说很重要 – user1194842

0
//OnTouchPrint.aspx.cs 
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Drawing.Printing; 
using System.IO; 
using System.Drawing; 

namespace TokenPrint 
{ 
    public partial class Try : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      if (!IsPostBack) 
      { 

      } 

     } 

     private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) 
      { 

       Graphics g = e.Graphics; 
       SolidBrush Brush = new SolidBrush(Color.Black); 
       string printText = TextBox1.Text; 
       g.DrawString(printText, new Font("arial", 12), Brush, 10, 10); 

      } 


     protected void Press_Click(object sender, EventArgs e) 
     { 
      try 
      { 
       string Time = DateTime.Now.ToString("yymmddHHMM"); 
       System.Drawing.Printing.PrinterSettings ps = new System.Drawing.Printing.PrinterSettings(); 
       ps.PrintToFile = true; 
       // ps.PrintFileName = "D:\\PRINT\\Print_"+Time+".oxps"; /* you can save file here */ 
       System.Drawing.Printing.PrintDocument pd = new System.Drawing.Printing.PrintDocument(); 
       pd.PrintPage += new PrintPageEventHandler(printDocument1_PrintPage); 
       System.Drawing.Printing.StandardPrintController printControl = new System.Drawing.Printing.StandardPrintController(); 
       pd.PrintController = printControl; 
       pd.DefaultPageSettings.Landscape = true; 
       pd.PrinterSettings = ps; 
       pd.Print(); 
       TextBox1.Text = ""; 
       ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alertMessage", "alert('Printed Successfully.Check: Drive D')", true); 


      } 
      catch (Exception ex) 
      { 

      } 


     } 

     protected void Button1_Click(object sender, EventArgs e) 
     { 
      Response.Redirect("Try.aspx"); 
     } 
    } 
} 

//OnTouchPrint.aspx 

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="OnTouchPrint.aspx.cs" Inherits="TokenPrint.Try" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 


</head> 
<body> 
    <form id="form1" runat="server"> 


    <asp:TextBox ID="TextBox1" runat="server" Width="235px" Height="142px" 
     TextMode="MultiLine"></asp:TextBox> 


    <br /> 
    <br /> 
    <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" 
     ControlToValidate="TextBox1" ErrorMessage="Empty message can not be printed!" 
     ValidationGroup="vgp1"></asp:RequiredFieldValidator> 
    <br /> 
    <br /> 
    <asp:Button ID="Press" runat="server" Text="Press" onclick="Press_Click" 
     ValidationGroup="vgp1" /> 


    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Refresh" 
     ValidationGroup="vgp2" /> 
&nbsp;&nbsp;&nbsp; 


    </form> 
</body> 
</html> 
+0

感谢您的回答,如果您不仅将工作代码放入其中,而且还解释您的代码(解决方案的步骤)到OP。 –

+0

哦..它的服务器端打印不是客户端。 当我在服务器上托管此解决方案并将其与客户端一起使用时,我找不到打印机。 –