2011-06-17 73 views
1

我在内存中有一个时间表,需要能够打印出来。C#如何创建和打印文档?

时间表可能会是很多页面,每个页面看起来都会非常相似: 一个网格单元,横轴是时间,纵轴是实体。单元格x,y将包含特定作业在时间点y的实体x的分配。

我在看System.Drawing.Printing.PrintDocument类,但它非常麻烦。我需要设置一个事件处理程序到PrintDocument.PrintPage,但似乎没有任何方法从PrintPageEventArgs获取页码?

我只想构建我的文档并调用一些Print()函数。我想如果我可以在事件处理程序中获取页码,我可以用e.Graphics和GDI动态构建页面布局。

我甚至可以使用表格打印HTML页面并打印 - 如果我能以某种方式控制在什么页面上打印什么内容?

有没有更好的方式来构建和打印C#文件?

目标计算机确实安装了Office,但它们都是不同的版本,并且我在收集正确版本的.Net/Office互操作库以使用它们时遇到了很多问题。

编辑:我甚至可能会创建一个临时的LaTeX文件并进行编译,然后将其打印出来。这似乎是一个很好的解决方案,只是目标机器被锁定,用户无法安装新软件,因此我需要将LaTeX编译器与我的程序捆绑在一起,而我的编译器差不多是300MB。

回答

1

听起来像你对我离开的太快放弃。处理PrintPage事件并不困难,并且由于事件是按顺序提出的,所以您只需在该事件中保留一个页面计数器即可。这就是我以前通过MetaFile图像完成的(printing Reporting Services reports通过Web服务调用)。

+0

其实我没有放弃,我一直在使用PrintDocument方法整天,因为我还没有找到一个可行的选择。 :)是的,我保持一个像你一样的页面计数器。 – Ozzah 2011-06-17 05:12:08

+0

:)。是的,我也试着寻找替代品很长一段时间。 – 2011-06-17 06:41:42