科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道在控制台应用程序中实现打印

在控制台应用程序中实现打印

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

   你是否厌倦了将从控制台应用程序中选出的文本打印出来?这里将介绍一种方便的工具来帮你实现打印。

作者:中国IT实验室 来源:中国IT实验室 2007年9月30日

关键字: 打印 编程

  • 评论
  • 分享微博
  • 分享邮件
  

你是否厌倦了将从控制台应用程序中选出的文本打印出来?这里将介绍一种方便的工具来帮你实现打印。

 

我在以前的一篇文章中曾介绍到过如何从控制台命令中捕获输出结果并将它放到剪贴板中。我常常需要从一些控制台命令中将文本输出结果打印出来,因此我对最后的例子进行了修改以使它支持打印。

 

.NET打印框架对于使用MFC的人来说并不陌生:你只需建立一个PrintDocument对象并调用其Print()方法就行。PrintDocument对象会调用你建立的事件处理来打印每个页面。打印完所有页面之后,打印处理会设置一个标记并结束打印。

 

在这个新的例子中,我做了三个地方的改动。首先,我修改了存储方法(storage)以便将被捕获的输入保存在一个ArrayList中,输入的每一行都成为该集合中的一个字符串: private void grabStream (TextReader inStream)

 

{

string str;

while (null != (str = inStream.ReadLine ()))

{

listOStrings.Add (str);

// Pipe it to the output:

System.Console.WriteLine (str);

}

}

 

接下来,我添加了一些命令行选项以使它能够将数据发送到剪贴板中或缺省的打印机上,或者同时发送到这两处(见javascript:openWindowRes('VS/2003_02/xml2html.asp?xmlfile=ConsoleApplication/List1.xml&xslfile=../../include/xsl/Mylist.xsl');">列表1)。

 

最后,我写了两个程序来将输出结果打印出来(见javascript:openWindowRes('VS/2003_02/xml2html.asp?xmlfile=ConsoleApplication/List2.xml&xslfile=../../include/xsl/Mylist.xsl');">列表2)。PrintData()方法用于建立一个PrintDocument对象并启动该打印过程。它还负责为打印页面处理添加事件处理程序。

 

PrintPage()方法用于打印每个页面。首先,我计算出符合打印页面的行数。字体的GetHeight()方法显示了单独一行的高度,PrintPageEventMarginbounds属性显示了每个页面的打印空间有多大。有了这些信息,我便可以简单地绘制出页眉行、页面的每一行以及页脚行。

 

在打印框架中有一个小问题:PageBounds属性代表的是整个页面的大小,而不是可打印区域的大小。我曾试图将页眉和页脚限定在打印区域以外,但没有成功。在有些打印机上,打印区域以下的地方是不能被打印出来的。所以我只能简单地调整页边距并将页眉和页脚放在打印区域中。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章