感谢 SachinKumar K 先生在 WWW.CODEPROJECT.COM 上的文章 FILE HANDLING AT CLIENT SIDE USING JAVASCRIPT。在这篇文章中,他提到必须将网站添加到受信任的站点列表中,以便可以创建和运行 ActiveX 对象。
对于 dos 打印,我按照以下系统在客户端系统点阵打印机上从我的网站获取基于 dos 的打印。
客户端系统上的配置:(Internet Explorer/浏览器配置)
打开 Internet Explorer --> 工具 --> Internet 选项 -->安全(选项卡)。
在受信任的站点中添加 SERVER URL
注意:取消选中“此区域中所有站点的必需服务器验证 (https:)(如果您的网站不是 HTTPS)以允许添加该站点。
接下来使用同一页面上的自定义级别选项卡启用 ActiveX 控件和插件
//创建一个批处理文件,例如:printme.bat。并在批处理文件中键入以下命令。
键入 %1 > prn
//批处理文件只包含一个命令行如上。您可以将 prn 关键字更改为 LPT1 或共享打印机,如 \system_name\printer
//如果需要,授予IIS_IUSRS,IUSR对文件夹的权限,该文件夹包含浏览器访问的printme.bat文件。
网页标签定义和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 目录中。
上述系统对我有用。谢谢大家和快乐的编码。