修改打印逻辑
This commit is contained in:
@@ -7,6 +7,7 @@ using RIZO_Application.Core;
|
||||
using RIZO_Application.Core.Mvvm;
|
||||
using RIZO_Helper.Tools;
|
||||
using RIZO_Application.Infrastructure.Model;
|
||||
using System.Linq;
|
||||
|
||||
namespace RIZO_Application.Modules.ModuleName.ViewModels
|
||||
{
|
||||
@@ -79,6 +80,10 @@ namespace RIZO_Application.Modules.ModuleName.ViewModels
|
||||
{
|
||||
{ "10", printDto.PartNumber },
|
||||
{ "11", "02S" },
|
||||
{"13",null },
|
||||
{"14",null },
|
||||
{"15",null },
|
||||
{"16",null },
|
||||
{ "10000", printDto.WorkOrder },
|
||||
{ "10002", printDto.Team },
|
||||
{ "10003", printDto.Sort.ToString() },
|
||||
@@ -86,13 +91,19 @@ namespace RIZO_Application.Modules.ModuleName.ViewModels
|
||||
{ "10005", printDto.Sort.ToString() },
|
||||
{ "10006", printDto.BatchCode },
|
||||
{ "10007", printDto.PackageNum.ToString() },
|
||||
{ "10011", printDto.LabelType.ToString() }
|
||||
{ "10011", printDto.LabelType.ToString() },
|
||||
{"10013",null },
|
||||
};
|
||||
|
||||
var subString = _printHelper.GetNamedSubStrings(templatePath:printDto.Path).Result;
|
||||
|
||||
var Intersect = printParameters.Where(x => subString.Contains(x.Key)).ToDictionary(
|
||||
x=>x.Key,x=>x.Value
|
||||
);
|
||||
// 执行打印
|
||||
bool printSuccess = _printHelper.PrintLabel(
|
||||
templatePath: printDto.Path,
|
||||
subStringValues: printParameters,
|
||||
subStringValues: Intersect,
|
||||
copies: 1);
|
||||
|
||||
if (printSuccess)
|
||||
|
||||
@@ -9,6 +9,7 @@ using RIZO_Application.Infrastructure.Model;
|
||||
using RIZO_Helper.Tools;
|
||||
using System.Windows;
|
||||
using System.IO.Ports;
|
||||
using System.Windows.Documents;
|
||||
|
||||
namespace RIZO_Application.Modules.ModuleName.ViewModels
|
||||
{
|
||||
@@ -109,6 +110,7 @@ namespace RIZO_Application.Modules.ModuleName.ViewModels
|
||||
IsConnected = false; // 发生错误时断开连接
|
||||
}
|
||||
|
||||
|
||||
// 定义事件处理方法
|
||||
private void HandleMessage(object sender, string labelCode)
|
||||
{
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
using System;
|
||||
using Microsoft.SqlServer.Server;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Reflection;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace linesider_screen_tool
|
||||
{
|
||||
@@ -12,7 +14,7 @@ namespace linesider_screen_tool
|
||||
private const string BarTenderProgId = "BarTender.Application";
|
||||
private object? _btApp; // 声明为可空类型
|
||||
private int _disposedValue;
|
||||
|
||||
|
||||
public BartenderPrintHelper()
|
||||
{
|
||||
// 延迟初始化,在首次使用时创建 Bartender 应用实例
|
||||
@@ -38,6 +40,51 @@ namespace linesider_screen_tool
|
||||
}, templatePath);
|
||||
}
|
||||
|
||||
|
||||
public Task<List<string>> GetNamedSubStrings(string templatePath)
|
||||
{
|
||||
dynamic format =null;
|
||||
dynamic btApp = null;
|
||||
try
|
||||
{
|
||||
btApp = Activator.CreateInstance(Type.GetTypeFromProgID(BarTenderProgId));
|
||||
format = btApp.Formats.Open(
|
||||
templatePath,
|
||||
false,
|
||||
null
|
||||
);
|
||||
format.PrintSetup.IdenticalCopiesOfLabel = 1;
|
||||
format.PrintSetup.NumberSerializedLabels = 1;
|
||||
List<string> subStrings = new List<string>();
|
||||
dynamic namedSubStrings = format.NamedSubStrings;
|
||||
|
||||
foreach (var iteam in namedSubStrings)
|
||||
{
|
||||
subStrings.Add(iteam.Name);
|
||||
}
|
||||
|
||||
return Task.FromResult(subStrings);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
Console.WriteLine($"发生错误: {ex.Message}");
|
||||
return null;
|
||||
}
|
||||
finally
|
||||
{
|
||||
// 清理资源
|
||||
if (format != null)
|
||||
{
|
||||
Marshal.ReleaseComObject(format);
|
||||
}
|
||||
if (btApp != null)
|
||||
{
|
||||
btApp.Quit(0);
|
||||
Marshal.ReleaseComObject(_btApp);
|
||||
}
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// 批量打印标签(高性能实现)
|
||||
/// </summary>
|
||||
|
||||
Reference in New Issue
Block a user