首页 > 编程语言 >C# Winform 使用 BarTender打印条码

C# Winform 使用 BarTender打印条码

时间:2023-08-15 14:11:55浏览次数:60  
标签:BarTender NAME C# 打印 int PrintName Winform btFormat

- 1. 使用软件BarTender 设计打印模板

贴一个入门级使用教程:https://blog.csdn.net/ononeway/article/details/119912602

我在项目中使用的是txt文本格式保存的字段以及数据,第一行是绑定数据的字段,第二行是字段对应的数据。

点击查看代码
"ITEM_CODE","ITEM_DESC","UOM_NAME","VENDOR_CODE","VENDOR_NAME","ORG_CODE","ORG_NAME","LOT_NUMBER","SERIAL_NO","DISABLE_DATE","SHIP_DATE","QTY","CARTON_CODE","ATTRIBUTE1","ATTRIBUTE2","ATTRIBUTE3","ATTRIBUTE4","ATTRIBUTE5","ATTRIBUTE6","ATTRIBUTE7","ATTRIBUTE8","ATTRIBUTE9","BarCode"
"","","","","","","","","","","","0","","15L方便桶","202308150009","15L","500","2273","C202104150001","成品条码"," xxxxxx3号","13983135628",""

这是完成模板效果图:

image

右键属性选择绑定数据的字段,以及设置文本的格式。
image

- 2. Winfrom集成打印

  • 1.第一步:需要将绑定数据的字段输出到文本中保存下来
    MODEL_NAME:文本模板的名称
    BarCodeList:打印数据的集合,支持多个打印
    PrintReNum:打印份数

下面代码的整体思路就是,先输出字段在文本中,然后再换行将数据输出到文本中。

点击查看代码
private int PrintToTxt(string MODEL_NAME, List<ZR.Model.BarTender.BarCodePram> BarCodeList, int PrintReNum)
        {
            if (PrintReNum <= 0) return -1;
            string FilePath = AppDomain.CurrentDomain.BaseDirectory.Replace("bin", @"Report\BarCode") + "$" + MODEL_NAME + ".txt";
            StringBuilder sb = new StringBuilder();

            Type t = typeof(ZR.Model.BarTender.BarCodePram);
            PropertyInfo[] myPropertyInfo = t.GetProperties();
            string Colums = string.Empty;
            for (int i = 0; i < myPropertyInfo.Length; i++)
            {

                if (i == myPropertyInfo.Length - 1)
                {
                    Colums += "\"" + myPropertyInfo[i].Name + "\"";
                }
                else
                {
                    Colums += "\"" + myPropertyInfo[i].Name + "\",";
                }
            }
            sb.AppendLine(Colums);
            foreach (ZR.Model.BarTender.BarCodePram pram in BarCodeList)
            {
                string row = string.Empty;
                for (int i = 0; i < myPropertyInfo.Length; i++)
                {

                    if (i == myPropertyInfo.Length - 1)
                    {
                        row += "\"" + myPropertyInfo[i].GetValue(pram, null) + "\"";
                    }
                    else
                    {
                        row += "\"" + myPropertyInfo[i].GetValue(pram, null) + "\",";
                    }
                }
                for (int j = 0; j < PrintReNum; j++)
                {
                    sb.AppendLine(row);
                }
            }
            int ret = SaveToTxt(sb, FilePath);
            return ret;
        }
  • 2.第二步:调用打印方法打印
点击查看代码
public void Print(string PrintName, int PrintCount = 1, int PrintNum = 1)
        {
            try
            {
                if (btApp == null)
                {
                    btApp = new BarTender.Application();
                }
                btFormat = btApp.Formats.Open(ReportPath + PrintName, false, "");
                btFormat.InputDataFileSetup.TextFile.FileName = (ReportPath + "$" + PrintName + ".txt");
                btFormat.PrintSetup.UseDatabase = true;
                btFormat.PrintSetup.IdenticalCopiesOfLabel = PrintCount;  //设置同序列打印的份数
                btFormat.PrintSetup.NumberSerializedLabels = PrintNum;  //设置需要打印的序列数 

                if (btFormat.PrintSetup.UseDatabase)
                {
                    btFormat.RecordRange = "1...";
                }
                //BarTenderSetParms(btFormat, Parms);
                int A = btFormat.PrintOut(false, true); //第二个false设置打印时是否跳出打印属性
                btFormat.Close(BarTender.BtSaveOptions.btDoNotSaveChanges); //退出时是否保存标签

                #region 处理打印无效果的问题

                Process p = new Process();
                p.StartInfo.FileName = "bartend.exe";
                //列印btw檔案並最小化程序
                p.StartInfo.Arguments = $@"/AF={ReportPath + PrintName} /P /min=SystemTray";
                p.EnableRaisingEvents = true;
                int pageCount = Convert.ToInt32(PrintCount);
                for (int i = 0; i < pageCount; i++)
                {
                    p.Start();
                }

                #endregion  
            }

点击打印之后弹出打印框点击打印即可

如果是打印的虚拟打印机上面会提示出入名称

- 3.最终效果

标签:BarTender,NAME,C#,打印,int,PrintName,Winform,btFormat
From: https://www.cnblogs.com/wofeiliangren/p/17630993.html

相关文章

  • 小米发布全新CyberDog 2,体型接近真实小型犬,超80%开源率,100+接口开放
    小米发布全新CyberDog2,体型接近真实小型犬,超80%开源率,100+接口开放2023-08-1508:01:28 来源: 金融界分享到:8月14日,小米发布全新仿生四足机器人CyberDog2。该款产品在继承前代优势的基础上,进行了全面的技术升级:它配备了新一代小米自研高性能电机,提供了更为强大的动态响应......
  • c# 如何将程序加密隐藏?
    下面将介绍如何通过LiteDB将自己的程序进行加密,首先介绍一下LiteDB。LiteDBLiteDB是一个轻量级的嵌入式数据库,它是用C#编写的,适用于.NET平台。它的设计目标是提供一个简单易用的数据库解决方案,可以在各种应用程序中使用。LiteDB使用单个文件作为数据库存储,这个文件可以在磁盘上......
  • decimal float double小数位比较
    decimalfloatdouble小数位比较语法---2023-7-27decimal最多可以保留28位小数float最多可以保留6位小数double最多可以保留14位小数///<summary>///测试语法///</summary>publicstaticvoidTestProgrammer(){d......
  • com.alibaba.excel.exception.ExcelWriteDataConvertException: Can not find 'Conver
    这个异常是由于使用阿里巴巴的EasyExcel库时,没有找到映射为Map类型的数据转换器所导致的。在使用EasyExcel进行Excel文件读写时,需要指定正确的数据转换器以实现对象与Excel单元格的相互转换。对于Map类型的数据,EasyExcel需要知道如何将Map转换为Excel中的单元格数据,因此需要自定义......
  • Programming abstractions in C阅读笔记p111-p113: boilerplate
    《ProgrammingAbstractionsInC》学习第47天,p111-p113,总结如下:一、技术总结1.boilerplate/**File:random.h*Version:1.0*LastmodifiedonFriJul2216:44:361994byeroberts*-----------------------------------------------------*Thisinterfacepr......
  • Android 怎么就不卡了呢之Choreographer
    前言针对AndroidUI不流畅的问题,Google提出了ProjectButter对Android的显示系统进行了重构。这次重构的三个关键点VSynch垂直同步TripleBuffer三重缓存Choreographer编舞者这篇文章我们主要聊一聊Choregrapher,后续的我们写关于其他。choreographer界面的显示大体会经过CPU的......
  • 网工内推 | 中高级网工,有金融网络维护经验,HCIP/CCNP认证优先
    01北京南天软件有限公司招聘岗位:中高级网络工程师职责描述:1、负责大型金融数据中心网络环境的交付、运维;2、负责大型金融数据中心网络设备的验收、安装、配置、管理;3、负责大型金融数据中心网络的应急,并协调原厂商解决设备运行过程中遇到的问题;任职要求:1、本科6年,专科8年以上及以......
  • 项目发布部署:如何发布.NETCore项目到IIS服务器?
    前言:本文将详细介绍如何发布.NETCore项目到IIS服务器。首先,第一步需要安装IIS,介绍了在本地电脑和服务器中进行安装。然后需要安装SDK和运行时才能发布.NETCore项目。其次介绍了如何发布.NETCore项目和Vue项目,并配置IIS。最后介绍了如何将项目部署到Service服务中。一、安装IIS教程......
  • Programming abstractions in C阅读笔记p111-p113: boilerplate
    《ProgrammingAbstractionsInC》学习第47天,p111-p113,总结如下:一、技术总结1.boilerplate/**File:random.h*Version:1.0*LastmodifiedonFriJul2216:44:361994byeroberts*-----------------------------------------------------*Thisinterfaceprovi......
  • abc236_e
    abc236_e二分+判断如果是平均数,我们只需将每个数-mid,然后dp判断是和是否大于等于0即可如果是中位数,那么我们将a[i]<mid看作-1,a[i]>=mid看作1,然后dp判断是否大于0即可#include<algorithm>#include<cstdio>#include<cstring>#definefo(i,a,b)for(int(i)=(a);(i)<=(b);(i)......