【问题标题】:Printing from web pages (reports especially) with greater precision以更高的精度从网页(尤其是报告)打印
【发布时间】:2010-03-18 05:18:52
【问题描述】:

我正在重新设计要移植到 Web 的 Windows 应用程序。一个令人担忧的领域是“打印”。

该应用程序是数据密集型的,需要生成复杂的报告。以前的 Windows 应用程序利用打印机 API 并将复杂的控制扩展到用户。它支持分页、避免在工作表的打印部分(如信头)上打印、选择布局和方向等功能。请注意,这些设置不仅在打印时进行,有时它们是报表定义的一部分。

据我所知,我们在打印网页时无法进行这种控制。我正在确定我可以使用的选项。虽然我更喜欢先研究有助于我从原始网页打印的东西,但以下是其他想法:

  1. 由于报告也可以导出为 .xls 和 .pdf 版本,让用户下载并直接打印。然而,这将我的解决方案限制在具有导出功能的应用领域。
  2. 使用 Silverlight (4.0) 进行报表布局定义和打印。我认为 Silverlight 4.0(目前处于测试阶段)提供了对打印机的充分控制。到目前为止,我一直在避免使用任何 RIA 插件。
  3. 在网络上精心生成具有固定尺寸的报告。我不确定这会走多远。

请分享可以在我的场景中轻松应用的实践。

【问题讨论】:

    标签: printing report webpage


    【解决方案1】:

    对于过去在网络上的报告,我喜欢使用 .NET 生成 PDF、Excel、Word 或 CSV 文件。我真的很喜欢iTextSharp,它允许创建 PDF。

    Word 可以接受 HTML,因此通常很容易引用。要获得更多控制权,您可以进入 Word interops http://nishantrana.wordpress.com/2007/11/03/creating-word-document-using-c/,但他们让我很沮丧。不是为了实现,但我觉得清理很差。

    CSV 非常适合原始数据转储,仅此而已。

    对于 HTML,您可以使用 style sheet targeted to print media 获得很好的控制。您无法控制某些事情,例如浏览器页眉和页脚。

    【讨论】:

    【解决方案2】:

    Flash 还具有比普通 HTML 更好的打印控件,尽管您可能不知道,因为 Flash 开发人员很少使用这些功能。这些天几乎每个人都应该安装 Flash,所以它不像 Silverlight 那样有人需要安装插件的好机会(对于 beta 版本来说更是如此)。我不确定 Flash 打印机 API 与 Silverlight 的打印机 API 相比如何,以及它们是否为您提供所需的控制级别,但它们的文档是公开的,因此您可以查看它。

    我还认为导出为 PDF 是一个好主意。我不明白为什么您不能将其扩展到涵盖需要打印报告的所有地方。基本上,不是直接从桌面上运行的 Windows 应用程序打印,而是在您的服务器上运行完全相同的代码并生成 PDF,然后他们可以自己打印。

    【讨论】:

      【解决方案3】:

      不幸的是,我认为尝试使用原始 HTML 来做这件事不会有太大的运气。对于我们的一位客户,我们采用了“生成 PDF”路线,并且效果很好。 PDF 还有一个额外的优势,即您不必将它们打印出来:您可以将它们通过电子邮件发送给老板/会计师/任何节省一点纸张的人。

      【讨论】:

        【解决方案4】:

        如果您想对打印输出进行绝对控制,PDF 是您的最佳选择。作为奖励,您还可以在应用程序中提供下载 PDF 的选项。

        使用 HTML,您将受用户浏览器设置的页面大小、边距以及如何处理分页符的支配。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-11-03
          • 1970-01-01
          相关资源
          最近更新 更多