其实整个流程代码比较简单,就是在二维码这块遇到点问题,直接调用模板不能打印二维码,出来的是默认的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.操作更加简单,调用更加方便
废话少说,直接上干货;
- 设置标签模板
- 模板绘制
- 绘制操作还是比较简单的,拖拽就可以实现,这里就不赘述了
- 参数设置
- 新版本的参数设置比较简单,在右侧"参数"栏中鼠标右键即可新建,记得取好名字,不要冲突,如下图
- 参数设置完成后,直接将参数拖拽到需要展示的位置即可,模板端的操作就结束了。
- 模板绘制
- 调用模板
- 直接上代码
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],并不会显示这个参数具体的值
正确操作如下:要双击参数进行添加
这两个方式添加的参数在形式上没有任何区别,很难分辨,所以在出现问题的时候很难发现。
感觉这个是一个隐藏的“彩蛋”