c#下crystalreport自定义纸张报表打印

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wickyhu2001/article/details/49873095

给公司作一个单据打印,就是一张打印纸(241mm*280mm) 分成3小份打,每页纸张(241mm*93.3mm), 

     一开始打出来方向都不对, 不得已只能把生产线的打印机共享后,在报表设计中选相应打印机写死到程序中进行编译,才能实现.
     但公司还有其它分点,总不能也这样吧,问题总要解决的,于是查了很多资料,参考了
http://blog.sina.com.cn/s/blog_6dd740190101le1q.html  与

http://wormday.cnblogs.com/archive/2005/12/22/302635.aspx

这2文后,在C#中得以实现, 希望对各位与我一样问题的帮助下, 具体如下: 

1.. 在报表设计的页面设置中,要将无打印机钩选,纸张设为宽24.1cm,高9.33cm, 以这样纸张设计好报表。 




2.  打印代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Text;
using System.Drawing;
using System.Drawing.Printing;
using System.Windows.Forms;
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
using Microsoft.Reporting.WinForms;
using System.Threading;
using Microsoft.Win32;

        private void print93241_Click(object sender, EventArgs e)

        {
            try
            {
                ServiceReference1.Service1Client kehus = new ServiceReference1.Service1Client(); //换成自己代码
                DataSet ds;
                int PaperRowKind=0;
                System.Drawing.Printing.PrintDocument printDoc = new System.Drawing.Printing.PrintDocument(); 
                printDoc.DefaultPageSettings.PaperSize=new System.Drawing.Printing.PaperSize("93241",2410,933);
                PageSettings pagesettings = new PageSettings();

                foreach(System.Drawing.Printing.PaperSize ps in printDoc.PrinterSettings.PaperSizes)
                {
                 if(ps.PaperName=="93241")
                 {
                  printDoc.PrinterSettings.DefaultPageSettings.PaperSize=ps;
                  printDoc.DefaultPageSettings.PaperSize=ps;
                  PaperRowKind = ps.RawKind;  
                 }
                }

                CrystalReport1 cr1 = new CrystalReport1();

                cr1.PrintOptions.PaperSize =(CrystalDecisions.Shared.PaperSize)PaperRowKind;
                cr1.PrintOptions.PaperOrientation = PaperOrientation.Portrait;
                ds = kehus.QuerySql("proc_dd"); //换成自己的查询

                cr1.SetDataSource(ds.Tables[0]);
                cr1.PrintToPrinter( 1, true, 1, 3000); 
                kehus.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

展开阅读全文

没有更多推荐了,返回首页