C# 2003 windows程序问题现在需要打印一些格式文本信息。要求:在指定的纸张,指定的像素位置处打印汉字,可以指定汉字的大小。没有表格或者图片。本人对于打印是个门外汉,期望得到大家的帮助。最好给出代码例子。谢谢。

解决方案 »

  1.   

    /// <summary>
    /// 打印文档类实例
    /// </summary>
    private PrintDocument GridPrintDocument;
    /// <summary>
    /// 预览类实例
    /// </summary>
    private PrintPreviewDialog PrintPriview;
    /// <summary>
    /// 打印设置
    /// </summary>
    protected DataPrintSetup dataPrintSetup = new DataPrintSetup(); /// <summary>
    /// 数据表中已打印的行数
    /// </summary>
    protected int tablerowno; //
    /// <summary>
    /// 第一页的行数
    /// </summary>
    protected int rowCountOfFirstPage; //
    /// <summary>
    /// 其它页的行数
    /// </summary>
    protected int rowCountOfOtherPage; //
    /// <summary>
    /// 打印的总页数
    /// </summary>
    private int pagecount; //
    /// <summary>
    /// 打印的pageno.;
    /// </summary>
    protected int printpageno; //
    /// <summary>
    /// 有tablestyle时各列的宽
    /// </summary>
    private ColumnAttrCollection alColumns = new ColumnAttrCollection(); //
    /// <summary>
    /// 纸张横向标志
    /// </summary>
    public bool LandScape
    {
    get
    {
    return this.dataPrintSetup.LandScape;
    }
    set
    {
    this.dataPrintSetup.LandScape = value;
    }
    } /// <summary>
    /// 页宽
    /// </summary>
    public int PageWidth //
    {
    get
    {
    return this.dataPrintSetup.PageWidth;
    }
    set
    {
    this.dataPrintSetup.PageWidth =  value;
    }
    }
    /// <summary>
    /// 页高
    /// </summary>
    public int PageHeight //
    {
    get
    {
    return this.dataPrintSetup.PageHeight;
    }
    set
    {
    this.dataPrintSetup.PageHeight = value;
    }
    }
    /// <summary>
    /// 打印字体
    /// </summary>
    public Font DataFont
    {
    get
    {
    return this.dataPrintSetup.DataFont;
    }
    set
    {
    this.dataPrintSetup.DataFont = value;
    this.dataPrintSetup.SubTitleFont = new Font(DataFont.Name,(DataFont.SizeInPoints + TitleFont.SizeInPoints) / 2);
    }
    }
    /// <summary>
    /// 标题
    /// </summary>
    public string Title
    {
    get
    {
    return this.dataPrintSetup.Title;
    }
    set
    {
    this.dataPrintSetup.Title = value;
    }
    }
    /// <summary>
    /// 子标题
    /// </summary>
    public string SubTitle
    {
    get
    {
    return this.dataPrintSetup.SubTitle;
    }
    set
    {
    this.dataPrintSetup.SubTitle = value;
    }
    }
    /// <summary>
    /// 结尾
    /// </summary>
    public string Footer
    {
    get
    {
    return dataPrintSetup.Footer;
    }
    set
    {
    dataPrintSetup.Footer = value;
    }
    }
    /// <summary>
    /// 标题字体
    /// </summary>
    public Font TitleFont
    {
    get
    {
    return this.dataPrintSetup.TitleFont;
    }
    set
    {
    this.dataPrintSetup.TitleFont = value;
    }
    }
    /// <summary>
    /// 子标题字体
    /// </summary>
    public Font SubTitleFont
    {
    get
    {
    return this.dataPrintSetup.SubTitleFont;
    }
    set
    {
    this.dataPrintSetup.SubTitleFont = value;
    }
    }
    /// <summary>
    /// 页眉高度
    /// </summary>
    public int TitleHeight
    {
    get
    {
    return this.dataPrintSetup.TitleHeight;
    }
    set
    {
    this.dataPrintSetup.TitleHeight = value;
    }
    }
    /// <summary>
    /// 页脚高度
    /// </summary>
    public int FootHeight
    {
    get
    {
    return  this.dataPrintSetup.FootHeight;
    }
    set
    {
    this.dataPrintSetup.FootHeight = value;
    }
    }
    /// <summary>
    /// 设置左右页边距
    /// </summary>
    public int LRMargin
    {
    get
    {
    return this.dataPrintSetup.LRMargin;
    }
    set
    {
    this.dataPrintSetup.LRMargin = value;
    }
    }
      

  2.   


       PrintDialog printDialog = new PrintDialog();
       printDialog.Document = printDocument;
       lineReader = new StringReader(textBox.Text);
       if (printDialog.ShowDialog() == DialogResult.OK)
       {
        try
           {
           printDocument.Print();
           }
           catch(Exception excep)
                {
                  MessageBox.Show(excep.Message, "打印出错", MessageBoxButtons.OK, MessageBoxIcon.Error);
                  printDocument.PrintController.OnEndPrint(printDocument,new PrintEventArgs());
                }
           }
      }
    总结打印的过程是 
    1 在应用程序窗体初始化时构造PrintDocument对象  添加 printDocument 的 PrintPage 方法 
    2 实现PrintPage方法  4 在用户的单击事件中调用 printDocument 的 Print方法实现打印功能
    在这中间可能要用到  PrintDialog PrintPreviewDialog PageSetupDialog 设置和查看打印效
    果这些方法通常是由菜单的单击触发的。
      

  3.   

    www.fcsoft.com.cn/eprint/index.htm 打印插件实现BS打印指定纸张