帮助:从浏览器打印多个“报告”(IE 6必不可少,其他人会很好)

时间:2009-12-03 20:18:05

标签: javascript browser pagination printing

对此没有想法?任何人吗?


以下是我的情景:

我有一个用户选择报告类型的表单,然后选择他们要为其生成报告的用户列表。当他们提交表单时,会打开一个新窗口,该窗口使用分页以允许用户使用下一个和上一个链接查看每个用户报告。

用户想要选项:

  1. 单独打印当前显示的报告(这很简单),
  2. “全部打印”选项可打印所有选定的报告。
  3. 但是,每个用户的每个报告都必须有自己的“Page x of n”页脚。

    对于页脚,我一直在使用浏览器页脚选项,但为了让每个报表打印输出的页面编号开始新,我必须为每个打印输出单独的window.print()调用。我已经用这种方式实现了它,但它很有效,但是它很糟糕,因为每次print()调用都会显示一个新的打印对话框,这意味着用户必须在每个对话框中单击print才能完成打印请求。许多报告=一个愚蠢的弹出打印对话框数量。

    理想情况下,我希望打印报告组看起来像一个打印作业,但我需要为每个报告重新启动页数。

    我想过尝试自己计算页面来制作自己的页脚,但考虑到可能会影响报告占用页数的所有变量,这似乎是一项艰巨的任务。我还阅读了一些关于使用ActiveX和WebBrowser对象来强制打印和隐藏打印对话框的一些内容,但我没有成功,因为我在XP SP2上运行。此外,据我所知,从安全角度来看,它是不受欢迎的,而且它不是一个好的跨浏览器解决方案。

    以前有没有人处理过这种类型的打印,并且会有一些方法可以让这项工作或更好的方法来处理它?<​​/ p>

    提前致谢。

2 个答案:

答案 0 :(得分:0)

我已经看到使用MeadCo scriptx组件的简化方法有两种方法,它允许您在没有对话框的情况下进行打印。但正如你正确地说从安全角度来看这并不好。这是在他们控制最终用户浏览器的公司环境中完成的。

第二种方法是沿着ajax路线下载并单独加载每个报告页面,而不是prining,然后将每个报告html汇总到一个doucment中,添加任何所需的分页符。最后渲染到IFRAME并在该帧上调用print以在一个动作中打印所有报告。

答案 1 :(得分:0)

这不是非常有用,但您可能希望使用pdf生成器,例如PDFlibfpdf。使用静态页面执行此操作将导致您所述的所有问题,以及您没有遇到的一些问题(例如用户设置自己的字体或字体大小并破坏您的分页)。