基于 Lodop 的单据单打印实例及连打的实现

1. 概述

Lodop & C-Lodop 是一款专业共享软件,公开版本未限制功能,多数用户可免费长期使用。

仅如下情况需要 注册收费

  • 你希望用到(不经过弹出预览窗口的)「直接打印」功能时,如果不注册,该功能直接打印的纸张左下角会有“本页由XXX试用版输出”小字样水印。
  • 另外,导出 Excel 文件或图片也需要注册。

2. 相关资源

3. 一个发运单打印的实例

目录结构说明(源码地址:https://github.com/whorusq/web-printer-with-Lodop

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
.
├── assets
│   ├── images
│   │   ├── layer-btn-cancel-hover.png
│   │   ├── layer-btn-cancel.png
│   │   ├── layer-btn-ok-hover.png
│   │   ├── layer-btn-ok.png
│   │   ├── layui-layer-title-close-hover.png
│   │   ├── layui-layer-title-close.png
│   │   └── layui-layer-title-info.png
│   ├── jquery.min.js
│   ├── jquery.tmpl.js <----- 一个简单的模块数据渲染插件
│   ├── layer <----- 本示例使用 layer 处理消息弹窗
│   │   ├── extend
│   │   │   └── layer.ext.js
│   │   ├── layer.js
│   │   └── skin
│   │   ├── default
│   │   │   ├── icon-ext.png
│   │   │   ├── icon.png
│   │   │   ├── loading-0.gif
│   │   │   ├── loading-1.gif
│   │   │   └── loading-2.gif
│   │   ├── layer.css
│   │   └── layer.ext.css
│   ├── lodop <----- 打印插件相关文件
│   │   ├── CLodop_Setup_for_Win32NT.exe
│   │   ├── LodopFuncs.js
│   │   ├── install_lodop32.exe
│   │   └── install_lodop64.exe
│   └── my.js <----- 一些用到的公共函数:转换金额、时间,调用弹窗
├── data.json <----- 模拟数据
└── index.html <----- 示例页:打印控件的调用及打印样式设置等

点击打印后,打印预览效果如下

预览图片)

4. 关于连打

4.1. 连打关键点

连打时主要是通过「针式打印机」,使用三联 n 等分(关于纸型的说明,详见附录:5.2. 纸型说明)的打印纸进行批量打印。

  1. 通过 进纸调节器按钮,调整打印机的默认纸型。如果你的打印机没有这个类似的按钮,可询问客服具体调节方法。

  2. 调整打印模板,在程序里设置打印纸型

4.2. 具体实现方法

基于上述 Demo,主要作如下修改:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

…略…

LODOP = getLodop();
LODOP.PRINT_INITA(0,10,"24.1cm","13.9cm","");
LODOP.SET_PRINT_PAGESIZE(1,"24.1cm","13.9cm","CreateCustomPage");
LODOP.SET_PRINT_MODE("CREATE_CUSTOM_PAGE_NAME","fyd_print_1");
// LODOP.SET_PRINT_MODE("POS_BASEON_PAPER",true);
// LODOP.SET_PREVIEW_WINDOW(1,0,0,1000,600,""); // 初始预览窗口大小
// LODOP.SET_SHOW_MODE("LANDSCAPE_DEFROTATED",1); // 横向打印时正向显示
LODOP.SET_PRINT_MODE("AUTO_CLOSE_PREWINDOW",1); // 打印后自动关闭预览
LODOP.SET_PRINT_MODE("CUSTOM_TASK_NAME","发运单打印"); // 打印队列中的文档名
LODOP.SET_SHOW_MODE("HIDE_PAPER_BOARD",1); // 去除背景滚动线

…略…

⚠️ 注意:对于打印模板的调整,可使用 Lodop 打印设计功能,或一点点打印预览进行调节

5. 附录

5.1. 相关常见问题

5.2. 纸型说明

预览图片)

预览图片)