在C#调用BarTender时,我本想在winform程序上,增加一个输入框,让用户可以自己输入打印张数,如下图
代码如下
//打开标签文档
btFormat = btApp.Formats.Open(AppDomain.CurrentDomain.BaseDirectory + @"\label\BoxLabel.btw");
//设置打印张数
btFormat.PrintSetup.IdenticalCopiesOfLabel = _pages;
//设置标签内容
btFormat.SetNamedSubStringValue("BarCodeSource", txtBarCode.Text);
btFormat.SetNamedSubStringValue("vendorNameSource", txtVendorName.Text);
btFormat.SetNamedSubStringValue("manufacturerSource", txtManufacturer.Text);
btFormat.SetNamedSubStringValue("SpecificationSource", txtSpecification.Text);
btFormat.SetNamedSubStringValue("ColorSource", txtColor.Text);
btFormat.SetNamedSubStringValue("QualitySource", nQuality.Value.ToString());
btFormat.SetNamedSubStringValue("PONoSource", txtPONo.Text);
btFormat.SetNamedSubStringValue("CustomerMaterialSource", txtCustomerMaterial.Text);
btFormat.SetNamedSubStringValue("BatchNoSource", txtBatchNo.Text);
btFormat.SetNamedSubStringValue("productionDateSource", dtProductionDate.Value.ToString("yyyy-MM-dd"));
var _QRCode = $"95/{txtManufacturer.Text}/{txtPONo.Text}/{txtCustomerMaterial.Text}/{nQuality.Value.ToString()}/{txtBatchNo.Text}/{dtProductionDate.Value.ToString("yyyy-MM-dd")}`";
btFormat.SetNamedSubStringValue("QRCodeSource", _QRCode);
//打印输出
btFormat.PrintOut(true, false);
btFormat.Close(BarTender.BtSaveOptions.btDoNotSaveChanges);
btApp.Quit(BarTender.BtSaveOptions.btDoNotSaveChanges);
但当打印时,系统报错(副本数由数据源提供。“打印对话框”的“副本数”值必须为常数。)如下图:
经过多次的尝试,我发现是标签的文档设置有问题,然后就把重点放在了文档的设置。最后发现是打印副本数的设置错了。修改后一切正常。
我将解决问题的方案发出来,希望对大家有帮助。
用barTender打开标签文档,并修改设置,步骤如下: