diff --git a/jeecgboot-vue3/public/print-plugin/XSL-PrintDot.exe b/jeecgboot-vue3/public/print-plugin/XSL-PrintDot.exe
new file mode 100644
index 00000000..f60882d7
Binary files /dev/null and b/jeecgboot-vue3/public/print-plugin/XSL-PrintDot.exe differ
diff --git a/jeecgboot-vue3/src/views/print/template/index.vue b/jeecgboot-vue3/src/views/print/template/index.vue
index c09c86cb..275c9f05 100644
--- a/jeecgboot-vue3/src/views/print/template/index.vue
+++ b/jeecgboot-vue3/src/views/print/template/index.vue
@@ -34,6 +34,7 @@
autocomplete="new-password"
@blur="persistPrintDotConfig"
/>
+ 下载打印插件
新增原生模板
快速打印
@@ -228,6 +229,20 @@
localStorage.setItem(LS_PRINT_DOT_ENABLED, printDotEnabled.value ? '1' : '0');
void refreshPrinterOptions(false);
}
+
+ /** 下载 PrintDot 桥接器(静态资源 public/print-plugin/XSL-PrintDot.exe) */
+ function downloadPrintPlugin() {
+ const base = import.meta.env.BASE_URL || '/';
+ const normalizedBase = base.endsWith('/') ? base : `${base}/`;
+ const url = `${normalizedBase}print-plugin/XSL-PrintDot.exe`;
+ const link = document.createElement('a');
+ link.href = url;
+ link.setAttribute('download', 'XSL-PrintDot.exe');
+ link.rel = 'noopener';
+ document.body.appendChild(link);
+ link.click();
+ document.body.removeChild(link);
+ }
/** 技能转换打印:示例数据(与快速打印占位说明一致) */
const SKILL_DATA_JSON_EXAMPLE = `{
"docNo": "MO-001",