如何从Web应用程序进行高级打印?

时间:2008-10-23 23:36:36

标签: asp.net internet-explorer printing

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

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

感谢任何建议(特别是经验)。

9 个答案:

答案 0 :(得分:11)

正如我asked about here already并且发现困难,你不会在浏览器中获得可靠和准确的打印结果。即使它是你已经承诺的内部网应用程序也必须只能与IE7一起使用,IE8将很快出来,然后Firefox将被允许并且所有你对CSS的微观管理都是徒劳的(我听起来很苦吗?)。

最具前瞻性的解决方案是咬紧牙关并开始生成PDF。你提到的工具很好。您还应该查看iTextiTextSharp。一旦你掌握了它,做PDF格式并不比HTML和CSS更难,你会知道结果将在每个人的计算机,每个人的浏览器和每个人的打印机上正确打印。我目前正在使用iTextSharp(尚未完成,但仍在学习和试验)。

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

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

Programmatically Selecting Landscape Printing

Printing to a Specific Printer

答案 1 :(得分:4)

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

某些网站会链接到“打印机友好版”,但如果用户决定只在网页上按CTRL + P,即使在HTML标题中同时引用显示和打印样式表也会有效是的。

答案 2 :(得分:3)

我在C#应用程序中使用了iTextSharp并且运气好了。它需要一些工作,但如果你有图形经验,这一切都是有道理的,PDF看起来非常好(打印得很好)。

http://itextsharp.sourceforge.net/

如果您希望代码生成PDF而不是可怕,请确保编写精美的PDF代码!例如,编写真正的模块化代码,其中包含许多内存类(如Lego),以表示将存在于PDF上的对象。这些对象只需要知道如何将自己绘制为PDF。

答案 3 :(得分:2)

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

答案 4 :(得分:1)

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

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

答案 5 :(得分:1)

仅适用于IE:

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

  

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

     

ScriptX打印功能的基本子集 - 标题&页脚设置,打印方向,页边距粗略控制和浏览器窗口/框架打印命令 - 免费提供,可自由分发。高级打印功能不是免费的。启用S​​criptX的文档需要引用有效的发布许可证才能使高级打印工作。

答案 6 :(得分:1)

借调别人所说的话,你永远不会让浏览器像你想要的那样打印。从经验来看,打印媒体类型CSS 看起来就像它可以工作一样,但它确实永远不会完成任务 - 特别是如果你需要在多个浏览器中工作(并且因为我包括IE的多个版本作为不同的浏览器,我认为所有网站最终都需要。)

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

答案 7 :(得分:0)

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

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

报告和动态行数据有点棘手,但可以完成。

对于实际打印 - 如果您在已知用户群(例如办公环境)时创建应用程序,则可以考虑使用BarTender之类的标签打印应用程序。您可以通过API让Web服务器调用打印作业,也可以让BarTender应用程序轮询应用程序以获取新作业。方便您在网站上点击“打印”并让打印机开始打印(没有其他用户干预)的Web应用程序,因为服务器实际上正在进行打印,而不是客户端。

答案 8 :(得分:0)

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

我使用的是导出Excel XML的第三方网格。为了使它适用于我,我使用XSLT和一些代码来调整XSLT以便注入打印设置。它没有PDF那么强大我确定,但它是一个相当不错的折衷方案,每页不需要太多的自定义。

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