C#winfromは、Bartender print、named print、およびdatabaseprintを呼び出します

私が使用する呼び出し方法では、Bartender10.1がインストールされている必要があります。最初にインストールしてください。インターネット上にはインストールパッケージがたくさんあるので、リンクは掲載しません。

インストール後、参照を追加する必要があります

 

 

次に、オブジェクト指向の考え方を最大限に活用して、CLASSファイルを作成します。これがコードです。地元の専制君主がいる場合は、私のダウンロードをサポートすることもできます。

名前空間ALL_PROJECT
{     クラスBarTender_class     {         BarTender.ApplicationBarTApp;         BarTender.Format BarTFormat;         private static BarTender_class BartenderPrin = null;





        #region public static BarTender_class         GetInstance ()
        {             if(BartenderPrin!= null)             {                 return BartenderPrin;             }             BartenderPrin = new BarTender_class();             BartenderPrinを返します。         }






        private BarTender_class()
        {             if(BarTApp == null)             {                 BarTApp = new BarTender.Application();             }         }         #endregion





        ///<summary>
        ///バーコードを印刷するデータ設定方法
        ///</summary>
        /// <paramname="Path">パス</param>
        /// <paramname="Qty">シングル印刷数量</param>
        /// <returns> </ returns>
        public bool PrintBarT(string Path、int Qty)
        {             if(string.IsNullOrEmpty(Path))             {                 MessageBox.Show( "テンプレートパスが空であるか、そうでないpresent ");                 return false;             }             BarTFormat = BarTApp.Formats.Open(Path、false、" ");             BarTFormat.PrintSetup.IdenticalCopiesOfLabel = Qty;             BarTApp.Visible = false;             BarTFormat.PrintSetup.NumberSerializedLabels = 1;









            try
            {                 DesignObject btObject = null;                 foreach(DesignObject obj in BarTFormat.Objects)                 {                     //オブジェクトが行の場合はエラーになります                     if(obj.Name.Contains( "text")|| obj.Name.Contains( "バーコード"))                     {                         if(obj.Value.ToString()。Contains( "[")&& obj.Value.ToString()。Contains( "]"))                         {                             btObject = BarTFormat.Objects.Find(obj.Name );                             btObject。DoNotPrint=true;                         }                     }











                }
                BarTFormat.PrintOut(false、false); // 2番目のパラメーターは、プリンターのプロパティを表示するかどうかです。プリンタパスを設定できます  
            }
            catch(Exception ex)
            {                 throw ex;             }             finally             {                 BarTFormat.Close(BarTender.BtSaveOptions.btDoNotSaveChanges);             }             return true;         }







        public bool PrintBarT2(string lblPath、System.Collections.Hashtable hTable、int PrintQty)
        {             if(string.IsNullOrEmpty(lblPath))             {                 MessageBox.Show( "テンプレートパスが空であるか存在しない");                 return false;             }             if( hTable == null || hTable.Count <= 0)             {                 MessageBox.Show( "印刷可能なデータなし");                 return false;             }             BarTFormat = BarTApp.Formats.Open(lblPath、false、 "");             BarTFormat.PrintSetup.IdenticalCopiesOfLabel = PrintQty;             BarTApp.Visible = false;












            BarTFormat.PrintSetup.NumberSerializedLabels = 1;             {
            を試してください

                foreach(hTable.Keysの文字列キー)
                {                     try                     {                         BarTFormat.SetNamedSubStringValue(key、(hTable [key])。ToString());                     }                     catch(Exception e1)                     {                         throw new Exception( "key:" + key + "、 "+ e1.Message);                     }                 }                 //ラベルの一部を印刷する必要はありません                 //ラベル変数                 文字列を取得しますvars= this.GetVar(lblPath);//印刷されたすべての変数値を取得しますラベル











                //テンプレートの変数は、hTableに存在しない場合、
                vars = vars.Substring(0、vars.Length-1);
                string [] bb = vars.Split(new char[]{を表示しないように設定されます。 '$'});
                ArrayList list = new ArrayList();
                for(int i = 0; i <bb.Length; i ++)
                {                     string [] cc = bb [i] .Split(new char [] {'#' });                     文字列データソースフィールド= cc [0] .ToString()。Replace( "{"、 "").Replace( "}"、 "").Replace( "\ n"、 "").Replace( "\ r"、 ""); //テンプレートのデータソース名。データソースを繰り返すことはできません                     。Bartenderのlist.Add(データソースフィールド)は制限されています。


                }
                DesignObject btObject = null;
                foreach(BarTFormat.ObjectsのDesignObject obj)
                {                     //オブジェクトが行の場合はエラーが発生します                     if(obj.Name.Contains( "text")|| obj.Name.Contains( "バーコード"))                     {


                        if(obj.Value.ToString()。Contains( "[")&& obj.Value.ToString()。Contains( "]"))
                        {                             btObject = BarTFormat.Objects.Find(obj.Name);                             btObject.DoNotPrint = true;                         }                     }                 }                 BarTFormat.PrintOut(false、false); // 2番目のパラメーターは、プリンターのプロパティを表示するかどうかです。プリンタパスを設定できます               }             catch(Exception ex)             {                 throw ex;             }             finally             {                 BarTFormat.Close(BarTender.BtSaveOptions.btDoNotSaveChanges);














            }

            trueを返します。
        }

        public string GetVar(string _模版)
        {             try             {                 BarTFormat = BarTApp.Formats.Open(_模版、false、 "");                 string var = BarTFormat.NamedSubStrings.GetAll( "#"、 "$");                 varを返します。             }             catch(Exception ex)             {







                元を投げる;
            }

        } 

    }
}

上記の作成が完了したら、テンプレートの設定を開始します。まず、名前の付いた印刷方法があります。

新しいテンプレートを作成します。名前付き変数を設定します

名前を入力します。

埋め込みデータを選択

テキストまたはバーコードのQRコードの名前を設定します

 

このようにして、名前付きテンプレートの準備が整い、プログラムを呼び出して印刷を開始します

        private void buttonX2_Click(object sender、EventArgs e)
        {             BarTender_class lp = BarTender_class.GetInstance();             Hashtable hs = new Hashtable(); // HSの値がメソッドの本体にあるため、             for(int i = 0; i <2; i ++)             {                 hs.Clear();                 hs.Add( "Prin_i"、i);                 lp.PrintBarT2( "C:\\ BtModel \\ named.btw"、hs、1);             }         }








レンダリング:2回ループすると、2つのラベルが出力されますが、ここには1つだけ配置します。

バーコードが少ない場合は上記の方法で問題ありませんが、バーコードが多すぎる場合は毎回プリンターが停止します。したがって、データベースメソッドを使用して以下を印刷します。すべての情報を一度にテンプレートに転送します。

これを行うには多くの方法があります。まず、最初に新しいテンプレートを作成します。

テンプレートのデータベースを設定する

ここにはデータソースの選択肢がたくさんあることがわかります。私はExcelの方法を使用しています。あなたはそれをするためにあなた自身の引用シナリオを選ぶことができます。

次に、Excelを選択します。これがExcelです。最初に空を設定し、最初にフィールドを指定し、フロントエンドからエクスポートした後にデータを入力します。

終了する次のステップまでずっと

ここのフィールドは私のExcelのフィールドであり、Excelには列がいくつあるか、ここには同じ数の列があることに注意してください。他のデータベースについても同じことが言えます。[完了]をクリックすると、テンプレートの準備が整います。

上記のように、Excelは列名のみの空のテーブルになりました。テンプレートのフィールドを決定するために、データがエクスポートされてから印刷されます。

 

次に、直接印刷します。テンプレートのエクスポートについては詳しく説明しません。必要に応じて、Excelファイルのエクスポート方法を確認できます。

        private void buttonX3_Click(object sender、EventArgs e)
        {             BarTender_class lp = BarTender_class.GetInstance();             lp.PrintBarT( "C:\\ BtModel \\データデータ.btw"、1);         }


超シンプルな印刷で、プリンターが一度に停止したり停止したりするのを防ぎます。マルチラベル印刷の効率はN倍に向上します。

これで、2つの印刷方法が完了しました。

----------------小さなテールセグメンテーション------------------------------- ---------

ルーキーの記録も進んでいます〜お役に立てば、親指を立ててください。-----コードなしのプログラマー大根から

おすすめ

転載: blog.csdn.net/weixin_38801976/article/details/107874490