当前位置:编程学习 > C#/ASP.NET >>

ASP.NET打印问题(水晶报表-〉pdf-〉打印输出)

现遇到一关于B/S程序ASP.NET“打印问题”不能解决。 

打印流程大致为四个步骤:①点击印刷Button -> ②弹出内嵌在IE中的pdf页面 -> ③“印刷”对话框,也就是打印页面设置 -> ④纸张打印输出(客户端打印机)

――――以上为现存程序,现客户提出的新要求如下:

问题一:省去上面四个步骤的②③两步,即:①点击印刷Button -> ②纸张打印输出(客户端打印 和 服务器端打印 均可。)

服务器端打印:即客户端向服务器段发送一条指令,告知在本地(服务器端)输出,但我不知道这样的要求是否能够实现,并且速度如何?

省去的②③两步能否用程序完成?

问题二:现存在X、Y、Z三台打印机,其中打印机X有4个出纸口,比如:1、2、3、4,不同的出纸口用来打印输出不同大小和型号的纸张。

现要做如下操作:

A类帐票 想通过 打印机X的 1号口 打印输出;

B类帐票 通过打印机X 的 2号口 打印输出;

C类帐票 通过打印机Y 打印输出(打印机Y只有一个出纸口);

D类帐票 通过打印机Z 打印输出(打印机Z只有一个出纸口)。

以上均需要程序自动执行,包括不同类别的帐票寻找不同的打印机、不同的出纸口也需要程序自动完成,用户仅仅需要点击web页面上的一个按钮,相应的帐票就从对应的打印机的 对应出纸口 直接打印输出。

直接输出:不出现任何窗口,甚至是选择“打印设置”和“打印机选择”窗口。
 

―――――目前计划解决方案如下――――――――――――――――――――――――――――――――

1、昨天偶然发现iText,不知道能否解决上述问题?

2、寻找Adobe提供的pdf sdk,使用pdf提供的ActiveX的打印控件。是否存在这样一个东西,即使存在能否解决上述问题?
 

―――――以下是一位同事的回信,可参考。――――――――――――――――――――――――――――――――

无论问题一或者问题二,都涉及到通过浏览器端的程序控制硬件资源的问题。

1,通过浏览器端程序(一般是JavaScript)控制客户端打印机

 ①点击印刷Button -> ②纸张打印输出

 我认为 有违于浏览器端程序的安全性限制,是不便实现的。

 反证法:如果能够实现,那么同样的道理,跳过上述步骤1也应该能够实现,

意味着可以在客户端不知情的时候操纵客户端打印机。显然这是不合理的。

 客户坚持要实现的话,很可能需要对客户端浏览器的属性进行重新设置,

去除上述安全性限制,并且另行开发打印控制逻辑。

2,通过Web程序控易做图务器端打印机

 应该是可以实现的,但是需要另行开发打印控制程序(比如,称之为程序PrnCtrlr)。

 Web程序当中按下打印按钮 -〉 起动服务器端的ASPX或者Java程序 -〉 间接调用PrnCtrlr

3,不想弹出“打印页面设置”的话,打印机出现各种故障的情况下怎么办?

 

总体上感觉客户仍然在用传统的VB程序模式来理解Web程序。

建议跟客户说明利弊。
--------------------编程问答-------------------- 用水晶报表10企业版吧
直接打印了 --------------------编程问答--------------------

<html>
<head>
<meta name=vs_targetSchema content="http://schemas.microsoft.com/intellisense/ie5">
<title>***上海市眼病防治中心病人结帐费用报表***</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<!--media=print 这个属性可以在打印时有效-->
<style media=print>
.Noprint{display:none;}
.PageNext{page-break-after: always;}
 

</style>
<style>
body,td,th 
{
font-size: 12px;
}
.tdp
{
    border-bottom: 1 solid #000000;
    border-left:  1 solid #000000;
    border-right:  0 solid #ffffff;
    border-top: 0 solid #ffffff;
}
.tabp
{
    border-color: #000000;

border-collapse:collapse;
}
.NOPRINT {
font-family: "宋体";
font-size: 12px;
}

</style>

</head>

<body >
  <OBJECT  id=WebBrowser  classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2  height=0  width=0 VIEWASTEXT>
  </OBJECT>
<input type=button value=打印     onclick="document.all.WebBrowser.ExecWB(6,1)" class="NOPRINT">
<input type=button value=直接打印 onclick="document.all.WebBrowser.ExecWB(6,6)" class="NOPRINT">
<input type=button value=页面设置 onclick="document.all.WebBrowser.ExecWB(8,1)" class="NOPRINT">
<input type=button value=打印预览 onclick="document.all.WebBrowser.ExecWB(7,1)" class="NOPRINT">
  <br/>
<table width="90%" border="0" align="center" cellpadding="0" cellspacing="0" >
  <tr align="center"> 
    <td colspan="5"><font size="3">上海市眼病防治中心病人结帐费用报表(A) </font></td>
  </tr>
  <tr> 
    <td>汇总人次 5</td>
    <td>费用合计 15853.12</td>
    <td>统计日期 </td>
    <td>制表人 023</td>
    <td>制表日期:2004-05-13</td>
  </tr>
</table>



<table width="90%" border="1" align="center" cellpadding="2" cellspacing="0" bordercolor="#000000"  class="tabp" >
  <tr> 
    <td  >姓名</td>
    <td   >住院号</td>
    <td   >科室</td>
    <td   >结帐日期</td>
    <td   >出院日期</td>
    <td   >费用合计</td>
    <td   >医保交易费用</td>
    <td   >分类给付费用</td>
    <td   >非医保交易费</td>
    <td   > </td>
    <td   > </td>
    <td   > </td>
    <td   > </td>
    <td   > </td>
    <td   > </td>

  </tr>
  <tr>
    <td   > </td>
    <td   > </td>
    <td   > </td>
    <td   > </td>
    <td   > </td>
    <td   > </td>
    <td   > </td>
    <td   > </td>
    <td   > </td>
    <td   > </td>
    <td   > </td>
    <td   > </td>
    <td   > </td>
    <td   > </td>

  </tr>
</table>
<hr align="center" width="90%" size="1" noshade class="NOPRINT" >
<!--分页-->
<div class="PageNext"></div>
<table width="90%" border="1" align="center" cellpadding="2" cellspacing="0" bordercolor="#000000"  class="tabp">
  <tr>
    <td >第2页</td>
  </tr>
  <tr>
    <td >看到分页了吧</td>
  </tr>
  <tr>
    <td > </td>
  </tr>
  <tr>
    <td > </td>
  </tr>
  <tr>
    <td ><table width="100%"  border="0" cellspacing="0" cellpadding="0">
        <tr>
          <td width="50%" >这样的报表
              对一般的要求就够了。</td>
          <td> </td>
        </tr>
    </table></td>
  </tr>
</table>
</body>
</html>



--------------------编程问答-------------------- 谁做这样的东西谁死  --------------------编程问答-------------------- 恭喜自己 正在走向死亡的路上 --------------------编程问答--------------------
引用 4 楼 stszd604 的回复:
恭喜自己 正在走向死亡的路上

。。。。。。不至于吧,我现在在搞flash 人类对未知的事务都是恐惧的 我开始连flash开发使用什么工具都不知道
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,