2

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

批处理文件是这样的:

批处理文件的名称: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 应用程序中实现相同的流程,请帮助我。

4

2 回答 2

1

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

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

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

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

更新

处理打印场景的正确方法是创建一个页面,该页面以简单易用的方式呈现内容以进行打印。例如,使用一个简单的表格来列出数据,在大多数演示文稿中使用白色,以避免不必要地花费打印墨盒,在特定尺寸(如 A4 或 letter 等)中符合您的需求的图片。然后您可以在正文中调用此函数标签:

 <body onload="window.print();">
    <!--content specially designed for proper printing -->
 </body>
于 2012-11-12T12:05:33.753 回答
0

感谢 SachinKumar K 先生在 WWW.CODEPROJECT.COM 上的文章 FILE HANDLING AT CLIENT SIDE USING JAVASCRIPT。在这篇文章中,他提到必须将网站添加到受信任的站点列表中,以便可以创建和运行 ActiveX 对象。

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

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

    打开 Internet Explorer --> 工具 --> Internet 选项 -->安全(选项卡)。

    在受信任的站点中添加 SERVER URL

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

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

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

    键入 %1 > prn

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

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

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

// 使用 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 目录中。

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

于 2015-12-19T06:54:47.013 回答