16

我一直在研究通过 Web 应用程序打印类似报告的数据的选项。一些可行的选项是编写 PDF、Excel XML、将 HTML 转储到 Excel,或使用诸如 activePDF webGrabber 之类的工具。我想问题是,有什么解决方案可以控制浏览器(在我的情况下为 IE)的打印但没有大量的开发时间。虽然我自己没有这方面的经验,但我看到了一些用于生成 PDF 的可怕代码。

我特别寻找的功能是在没有用户干预的情况下打印横向或纵向。此外,控制基本样式对于将 Web 应用程序的基本外观/感觉转换为打印格式非常重要。

任何建议(尤其是经验)都值得赞赏。

4

9 回答 9

11

正如我已经在这里询问过的并且发现了困难的方法,您不会仅仅在浏览器中获得可靠和准确的打印结果。即使它是一个向您承诺只能使用 IE7 的 Intranet 应用程序,IE8 也将很快推出,然后将允许使用 Firefox,并且您对 CSS 的所有细心微管理都将付诸东流(我听起来是不是很痛苦?)。

最具前瞻性的解决方案是硬着头皮去生成 PDF。你提到的工具很好。您还应该查看iTextiTextSharp。一旦掌握了窍门,制作 PDF 布局并不比 HTML 和 CSS 更难,而且您会知道结果将在每个人的计算机、每个人的浏览器和每个人的打印机上正确打印。我目前正在使用 iTextSharp(尚未完成,但仍在学习和试验)。

我也没有找到可靠的方法来控制页面内的打印选项,因此依靠您的用户从纵向更改为横向或设置或调整页边距或关闭打印页眉和页脚在从长远来看 - 当他们不能(或只是不)遵循指示时,你最终会惹恼他们并为自己制造更多的头痛。

“相关问题”侧边栏非常有用。我在网页上看到了有关控制打印机的这些问题(两者的答案都相当于:“你不能”):

以编程方式选择横向打印

打印到特定打印机

于 2008-10-23T23:50:18.370 回答
4

您还可以查看设置特定的CSS 样式表以进行打印。这样做的好处是您可以获取一个显示给用户的现有网页,稍微更改格式以删除任何花哨的横幅或其他耗墨类型的图像,然后打印出他们在屏幕上看到的内容。

一些站点会有一个指向“打印机友好版本”的链接,但是如果用户决定在他们所在的页面上简单地按 CTRL+P,那么即使在 HTML 标题中同时引用显示和打印样式表也将起作用。

于 2008-10-23T23:48:56.127 回答
3

我在 C# 应用程序中使用过 iTextSharp 并且很幸运。这需要一些工作,但如果您有图形经验,这一切都很有意义,而且 PDF 看起来非常好(并且打印效果很好)。

http://itextsharp.sourceforge.net/

如果您希望生成 PDF 的代码不可怕,请确保编写好的 PDF 代码!例如,编写具有大量内存类的真正模块化代码,您可以组合这些类(如乐高)来表示将在 PDF 上运行的对象。这些对象只需要知道如何将自己绘制为 PDF。

于 2008-10-23T23:51:13.533 回答
2

你可以看看 SQL Server Reporting Services。还有许多第三方报告工具,例如http://www.devexpress.com/Products/NET/Reporting/

于 2008-10-23T23:46:37.520 回答
1

我不确定这是否是您正在寻找的东西,但为什么不将 CSS 与 media=print 样式表一起使用。设计您的样式表,使打印的表单具有您想要的特征。或者,您可以通过以 CSV 格式下载数据并让用户根据数据构建自己的报告来导出到 Excel。

对于实际的 PDF 和 Excel,我使用了来自Aspose.com的控件。

于 2008-10-23T23:49:48.123 回答
1

仅适用于 IE:

http://www.meadroid.com/scriptx/index.asp

对于那些需要从运行 Microsoft 的 Internet Explorer 浏览器的客户端和服务器计算机打印 html 文档的人来说,这是绝对的控制。

ScriptX 打印功能的一个基本子集——页眉和页脚设置、打印方向、边距粗略控制和浏览器窗口/框架打印命令——是免费提供的,并且可以免费分发。高级打印功能不是免费的。启用 ScriptX 的文档需要参考有效的发布许可证才能进行高级打印。

于 2008-10-24T00:14:43.813 回答
1

附和其他人所说的,你永远不会让浏览器按你想要的方式打印。从经验来看,打印媒体类型 CSS看起来可以工作,但它确实无法完成工作 - 特别是如果您需要在多个浏览器中工作(并且因为我将多个版本的 IE 包含为不同的浏览器,我认为所有网站最终都需要。)

我认为最好的方法是动态地动态构建 PDF。为您的平台找到您喜欢/负担得起的 PDF 包并使用它运行。相信我,你会很高兴你做到了。

于 2008-10-24T00:17:46.070 回答
0

这取决于您的预期客户群是已知的还是未知的。如果您想允许“任何人”生成可打印的文档,那么我同意其他人的观点,即 PDF 路线是一个不错的选择。

我们在使用PDFLib轻松创建有吸引力的 PDF 文档方面取得了巨大成功。使用他们的服务器端模块,您可以让设计人员在 InDesign 或 Illustrator 中创建您的文档,然后以编程方式将动态字段放在顶部(甚至使用 Acrobat 放置字段)

对于报表和动态行数据来说,这有点棘手,但可以做到。

对于实际打印 - 如果您在用户群已知的情况下创建应用程序(例如办公环境),您可能会考虑使用BarTender 之类的标签打印应用程序。您可以让 Web 服务器通过 API 调用打印作业,或者让 BarTender 应用程序轮询应用程序以获取新作业。对于您想要在站点上点击“打印”并让打印机开始打印(无需其他用户干预)的 Web 应用程序非常方便,因为服务器实际上正在执行打印,而不是客户端。

于 2008-10-24T00:45:02.830 回答
0

主要是分享我处理这个问题的方式,同时也提供另一种选择......

我正在使用导出 Excel XML 的第 3 方网格。为了让它对我有用,我使用 XSLT 和一些代码来调整 XSLT 以便注入打印设置。我敢肯定,它不如 PDF 强大,但它是一个相当不错的折衷方案,不需要对每页进行太多自定义。

因此,基本的解决方案是以 Excel XML 格式导出,并为页面方向、缩放以及您可能喜欢的任何其他内容注入标签。您可以从基本的 Excel 工作表开始并保存为 XML,进行所需的调整。然后你阅读源代码并弄清楚 Excel 是如何做到的。我找不到任何有用的文档。

于 2009-02-03T05:00:36.977 回答