增强条码元素和自由表格元素的渲染逻辑,支持更多条码格式和文本边框样式。新增条码渲染工具,优化打印预览窗口的打印机选择功能,提升用户体验和打印模板的灵活性。

This commit is contained in:
geht
2026-05-13 12:35:02 +08:00
parent d2f49add82
commit 2c8620522b
15 changed files with 1446 additions and 125 deletions

View File

@@ -90,10 +90,31 @@ public class PrintDotService : IPrintDotService
var status = resDoc?["status"]?.GetValue<string>();
if (status == null) continue;
if (status == "success") return;
throw new InvalidOperationException(resDoc?["message"]?.GetValue<string>() ?? "PrintDot 打印失败");
var rawMsg = resDoc?["message"]?.GetValue<string>() ?? "PrintDot 打印失败";
throw new InvalidOperationException(EnhanceErrorMessage(rawMsg));
}
}
/// <summary>
/// 将 PrintDot 返回的部分英文错误转换为带本地处理步骤的中文提示。
/// 与 web 端 printDotBridge.ts::enhancePrintDotErrorMessage 行为一致,方便桌面端用户自助排查。
/// </summary>
private static string EnhanceErrorMessage(string raw)
{
var m = (raw ?? string.Empty).Trim();
// 缺 SumatraPDF是 PrintDot 客户端最常见的初始化错误
if (System.Text.RegularExpressions.Regex.IsMatch(m, @"SumatraPDF\.exe not found", System.Text.RegularExpressions.RegexOptions.IgnoreCase)
|| System.Text.RegularExpressions.Regex.IsMatch(m, "SUMATRAPDF_PATH", System.Text.RegularExpressions.RegexOptions.IgnoreCase))
{
return m + "。\n本地处理PrintDot 依赖 SumatraPDF 静默打印 PDF。请安装 SumatraPDF 后任选其一:\n" +
"① 将 SumatraPDF.exe 放在 PrintDot 客户端 exe 同目录;\n" +
"② 或将 SumatraPDF 安装目录加入系统 PATH\n" +
"③ 或设置用户/系统环境变量 SUMATRAPDF_PATH 指向 SumatraPDF.exe 的完整路径;\n" +
"然后重启 PrintDot 桥接器即可。";
}
return m;
}
private static async Task<string> ReceiveTextAsync(ClientWebSocket ws, CancellationToken ct)
{
var buffer = new ArraySegment<byte>(new byte[64 * 1024]);