【问题标题】:C# How can I create and print a document?C# 如何创建和打印文档?
【发布时间】:2011-06-17 01:21:34
【问题描述】:

我在内存中有一个时间表,需要能够打印出来。

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

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

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

我什至可以使用表格组合一个 HTML 页面并打印它——如果我能以某种方式控制在哪个页面上打印什么?

有没有更好的方法在 C# 中构造和打印文档?

目标机器确实安装了 Office,但它们都是不同的版本,我在获取正确版本的 .Net/Office 互操作库以与它们一起使用时遇到了很多麻烦。

编辑:我什至可以即时创建一个临时 LaTeX 文件并编译它,然后打印它。这似乎是一个很好的解决方案,除了目标机器被锁定并且用户无法安装新软件,因此我需要将 LaTeX 编译器与我的程序捆绑在一起,而我的编译器几乎是 300MB。

【问题讨论】:

    标签: c# printing


    【解决方案1】:

    在我看来,你放弃得太早了。处理 PrintPage 事件并不难,而且由于事件是按顺序引发的,您所要做的就是在该事件中保留一个页面计数器。这就是我过去使用 MetaFile 图像的方式(printing Reporting Services reports 通过网络服务调用)。

    【讨论】:

    • 其实我并没有放弃,我整天都在研究 PrintDocument 方法,因为我还没有找到可行的替代方案。 :) 是的,我像你一样保留一个页面计数器。
    • :)。是的,我也尝试了很长时间。
    【解决方案2】:

    我使用 Microsoft Chart Controls 构建了一个类似的工具,易于使用。

    http://www.microsoft.com/downloads/en/details.aspx?FamilyID=130f7986-bf49-4fe5-9ca8-910ae6ea442c&displaylang=en

    【讨论】:

    • 我以前使用过 MSCharts - 它包含在 .Net 4 中。我认为 MSCharts 不能制作要打印的文本网格吗?也许你误解了这个问题?有人可以确认一下吗?
    【解决方案3】:

    如果你可以将它保存到一个文件中,你可以在这里使用它,

    Print images c#.net

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-05
      • 1970-01-01
      • 2010-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多