如何在Web应用程序中实现打印

时间:2012-11-12 11:39:11

标签: javascript asp.net vb.net printing

在我的桌面应用程序中,我通过批处理文件开发了基于文本的报告和打印,因为打印是批量大小的,有时我们必须限制打印单个副本,如定期存款收据等。我们正在使用lqdsi 5235 dot -matrix打印机工作文件。目前的桌面应用程序流程如下:

Batchfile是这样的:

批处理文件的名称:Dosprint.bat

Type %1 > prn

对于网络打印: 批处理文件的名称:Netprint.bat

Type %1 > \\SharedComputer\SharedPrinterName

在应用程序中,我按如下方式重定向打印

Public Function printFile(ByVal mFileNamePath As String) As Boolean
Shell(Application.StartupPath & "\Printer\dosprint.bat " & mFileNamePath, AppWinStyle.Hide)
      Return True
End Function

印刷价值非常高,有数千篇论文需要打印。这是非常安全的,我可以控制副本和所有类似的定期存款收据等 如果有任何方法可以在Web应用程序中实现相同的过程,请帮助我。

2 个答案:

答案 0 :(得分:1)

如果您的意思是如何从Web应用程序运行批处理文件,则可以执行以下操作:

  System.Diagnostics.Process.Start(file.FullName) //where file is a FileInfo class

只要您的Web应用程序可以访问该文件(例如位于bin文件夹中)和

运行您的应用的帐户具有足够的权限来执行该文件。

更新

处理打印方案的正确方法是创建一个页面,以简单方便的方式呈现内容。 例如,使用简单的表格制作表格数据,在大多数演示文稿中使用白色,以避免不必要地使用打印墨盒,符合特定尺寸(如A4或字母等)的图片。然后您可以在体内调用此功能标记:

 <body onload="window.print();">
    <!--content specially designed for proper printing -->
 </body>

答案 1 :(得分:0)

感谢SachinKumar K先生,他在WWW.CODEPROJECT.COM上使用JAVASCRIPT在客户端处理文章。在本文中,他提到必须将网站添加到可信站点列表中,以便可以创建和运行ActiveX对象。

对于dos打印,我按照以下系统从我的网站上在客户端系统点阵打印机上进行基于dos的打印。

  1. 客户端系统上的配置:( Internet Explorer /浏览器配置)

    打开Internet Explorer - &gt;工具 - &gt;Internet选项 - &gt;安全(标签)。

    在可信站点中添加SERVER URL

    注意:取消选中&#34;此区域中所有网站(如果您的网站不是HTTPS)所需的服务器验证(https :),以允许添加该网站。

    接下来,在同一页面上使用“自定义级别”选项卡启用ActiveX控件和插件

    //创建一个批处理文件ex:printme.bat。并在批处理文件中键入以下命令。

    输入%1&gt; PRN

    //批处理文件只包含一个命令行,如上所述。您可以将prn关键字更改为LPT1或共享打印机,如\ system_name \ printer

    //如果需要,授予IIS_IUSRS,该文件夹的IUSR权限包含要由浏览器访问的printme.bat文件。

  2. 网页标签定义和javascript实施:

  3. //使用PRE标签。它以未格式化的方式存储原始数据(ASCII)

    <pre id="predata" runat="server" style="display:none;"></pre>
    
    <asp:Button Text="Print Report" runat="server" ID="btnprint" Width="101px" CssClass="buttonstyle" BackColor="DarkSlateGray"  ForeColor="Aqua" OnClientClick="dosprint()" />
    
    <%-- JAVA SCRIPT FOR PRINTING --%>
        <script>
            function dosprint () {
                var fso, tempfile,mdata;
                var fname = { key: 'value' };
                fso = new ActiveXObject("Scripting.FileSystemObject");
                function CreateTempFile(fname) {
                    var tfolder, tfile, tname, fname, TemporaryFolder = 2;
                    tfolder = fso.GetSpecialFolder(TemporaryFolder);
                    tname = fso.GetTempName();
                    fname.key = tfolder + '\\' + tname;
                    tfile = tfolder.CreateTextFile(tname);
                    return (tfile);
                }
                tempfile = CreateTempFile(fname);
                mdata = document.getElementById('<%= predata.ClientID %>').innerText;
                tempfile.writeline(mdata);
                tempfile.close();
                objShell = new ActiveXObject("WScript.Shell");
                comspec = objShell.ExpandEnvironmentStrings("%comspec%");
                objExec = objShell.Exec('c:\\temp\\printme.bat ' + fname.key); 
              // give double back slash to get a back slash in path
     }
     </script>  
    

    在上面的代码中,PRINTME.BAT批处理文件存在于客户端系统c:\ temp目录中。

    上述系统对我有用。 谢谢大家和快乐的编码。