C#调用FastReport模板进行打印

 其实整个流程代码比较简单,就是在二维码这块遇到点问题,直接调用模板不能打印二维码,出来的是默认的Code39码制的一维码,后来在这位仁兄的博客下找到了解决方法

https://www.cnblogs.com/healer007/p/9017909.html

记录如下:

private void PrintHZPackOne(HZTagModelInfo hZTagModelInfo, HZPackOneInfo one_insert)
        {
            try
            {
                Report rp = new Report();//打印类
                rp.Clear();//清除缓存
                rp.Load(@"Print\HZPackOne.frx");//加载模板
                var ProduceName = rp.FindObject("ProduceName") as TextObject;//产品名称
                if (ProduceName != null)
                {
                    ProduceName.Text = one_insert.TagName;
                }

                var Barcode1_SN = rp.FindObject("Barcode1_SN") as BarcodeObject;//一维码
                if (Barcode1_SN != null)
                {
                    Barcode1_SN.Text = one_insert.SN;
                    Barcode1_SN.Barcode = new Barcode128();
                }

                var Barcode2_SN = rp.FindObject("Barcode2_SN") as BarcodeObject;//二维码
                if (Barcode2_SN != null)
                {
                    Barcode2_SN.Text = one_insert.SN;
                    Barcode2_SN.Barcode = new BarcodeQR();
                }

                rp.PrintSettings.ShowDialog = false; //直接打印  True时先预览再打印
                rp.Print();
                rp.Dispose();
            }
            catch (Exception ex)
            {
                XtraMessageBox.Show("打印出错!\r\n" + ex.Message, "消息", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

 要注意的是需要调用FastReport.dll,而且要新一点的版本,能够支持BarcodeQR方法的就可以

 

****************************************************************************************************************************

一切都在变化,打印标签也在变化,所以FastReport打印标签又要使用新方法了.

这里讲述的是使用2019版本的fastreport打印标签

2019版本的优势总结一下:
1.dll类库更容易获得

2.操作更加简单,调用更加方便

废话少说,直接上干货;

  1. 设置标签模板
    1. 模板绘制
      1. 绘制操作还是比较简单的,拖拽就可以实现,这里就不赘述了
    2. 参数设置
      1. 新版本的参数设置比较简单,在右侧"参数"栏中鼠标右键即可新建,记得取好名字,不要冲突,如下图
      2. 参数设置完成后,直接将参数拖拽到需要展示的位置即可,模板端的操作就结束了。
  2. 调用模板
    1. 直接上代码
      private void btnPrintSelect_Click(object sender, EventArgs e)
              {
                  //报表路径
                  string path = Application.StartupPath + $"/Print/InterCode.frx";
                  FastReport.Report report = new FastReport.Report();
                  report.Load(path);
      
                  //打印对话框
                  report.PrintSettings.ShowDialog = false;
                  var selectRow = new PrintBLL().GdvBatchInfo();//获取需要打印的信息
                  foreach (var item in selectRow)
                  {
                      report.SetParameterValue("MO_DOC_NO", item .MO_DOC_NO);//根据参数名给模板传值
                      report.SetParameterValue("Batch_NO", item .Batch_NO);
                      report.SetParameterValue("ITEM_Code", batch.ITEM_CODE);
                      report.SetParameterValue("ITEM_Desc", item .ITEM_DESC);
                      report.SetParameterValue("PackQty", batch.QTY);
                      //打印
                      report.Print();
                  }
                  report.Dispose();
              }

       

OK了,启动程序就可以打印了,记得要在程序里面引用FastReport 2019版本的dll,需要如下dll

 

 

**************************************************************************************************************************************

又来填坑了,在使用FastReport打印,在通过参数方式进行打印的时候会出现参数已经传了值,并且正确,但是对应的条码内容就是不正确,

扫描的结果是 ==》[参数名],这让我很郁闷,同样参数的文本内容可以显示,但是在条码这就无法显示。

最后经过执着的尝试,终于还是发现了问题所在,如下:

因为我添加的方式直接拖曳参数,这样是不行的,虽然上面显示了参数已经本加载到内容区,

但是打印的结果显示的就是 [InterCode],并不会显示这个参数具体的值

 

 

正确操作如下:要双击参数进行添加

 

这两个方式添加的参数在形式上没有任何区别,很难分辨,所以在出现问题的时候很难发现。

感觉这个是一个隐藏的“彩蛋”  

 

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值