今天想看看,基于clodop和Chrome原生打印的标签实现方法与性能对比。先看看DeepSeek关于这个问题的回答!
CloudPrint 和 Chrome 原生打印的区别
基本概念差异
-
CloudPrint (Clodop)
- 是基于云的打印服务解决方案
- 需要安装专门的客户端程序
- 支持跨平台、跨设备打印
-
Chrome 原生打印
- 是浏览器内置的打印功能
- 直接调用操作系统打印接口
- 不需要额外安装软件
功能特性对比
特性 | CloudPrint (Clodop) | Chrome 原生打印 |
---|---|---|
安装要求 | 需要安装客户端 | 无需安装 |
跨平台支持 | 优秀 | 一般 |
打印预览 | 自定义预览界面 | 浏览器标准预览 |
标签打印支持 | 专业支持 | 基本支持 |
打印精度控制 | 更精细 | 一般 |
批量打印 | 支持更好 | 有限支持 |
打印模板管理 | 有专门管理系统 | 无 |
网络打印 | 支持远程打印 | 仅本地打印 |
标签打印的具体区别
-
打印精度
- Clodop: 提供更高精度的DPI控制,适合精细标签
- Chrome: 依赖系统打印设置,精度有限
-
模板支持
- Clodop: 支持保存和调用打印模板
- Chrome: 每次需要重新设置格式
-
批量处理
- Clodop: 优化了批量标签打印流程
- Chrome: 批量打印效率较低
-
特殊格式
- Clodop: 支持条形码、二维码等特殊标签格式
- Chrome: 支持有限
当然主角 Claude还是采用➡️ Windows下用docker desktop搭建Claude code 一文中的方式!
- 首先使用clodop(老肚皮),主要缺点是需要给每个电脑安装客户端!再就是免预览打印需要买授权。
第一次提示词说的不对,说成了lodop,马上改!
看看成果!很细节的做了个测试页面~
- 老肚皮打印预览效果!消耗2500积分(实现代码在文末)
- 再试试chrome浏览器版本!优点不用额外装东西!
- 有了前面成果的参照,2分钟就完成了。
- 出来了,效果怎么说呢,DeepSeek没讲错,很一般!
最后,奉上核心代码!先看clodop版本!
function createPrintJob(isPreview) {
const sampleId = document.getElementById('sampleId').value;
const patientName = document.getElementById('patientName').value;
const patientId = document.getElementById('patientId').value;
const gender = document.getElementById('gender').value;
const age = document.getElementById('age').value;
const center = document.getElementById('center').value;
const testItem = document.getElementById('testItem').value;
const identifier = document.getElementById('identifier').value;
const now = new Date();
const dateTime = `${String(now.getFullYear()).substr(-2)}-${String(now.getMonth()+1).padStart(2,'0')}-${String(now.getDate()).padStart(2,'0')} ${String(now.getHours()).padStart(2,'0')}:${String(now.getMinutes()).padStart(2,'0')}:${String(now.getSeconds()).padStart(2,'0')}`;
log('创建打印任务,参数:');
log(`样本编号: ${sampleId}`);
log(`患者信息: ${patientName} ${patientId} ${gender} ${age}`);
log(`中心: ${center}`);
log(`项目: ${testItem}`);
log(`标识: ${identifier}`);
log(`时间: ${dateTime}`);
// 初始化打印任务
CLODOP.PRINT_INIT("瓶签打印");
// 设置纸张大小为50*30mm (单位:0.1mm)
CLODOP.SET_PRINT_PAGESIZE(1, 500, 300, "");
log('设置纸张大小: 50*30mm');
// 添加条形码
CLODOP.ADD_PRINT_BARCODE(10, 40, 135, 40, "128A", sampleId);
CLODOP.SET_PRINT_STYLEA(0, "ShowBarText", 0);
log('添加条形码: ' + sampleId);
// 添加样本编号 - 条码下方居中
CLODOP.ADD_PRINT_TEXT(50, 20, 110, 15, sampleId);
CLODOP.SET_PRINT_STYLEA(0, "FontSize", 10);
// CLODOP.SET_PRINT_STYLEA(0, "Bold", 1);
CLODOP.SET_PRINT_STYLEA(0, "Alignment", 2);
// 添加患者信息行
const patientInfo = `${patientName} ${patientId} ${gender} ${age}`;
CLODOP.ADD_PRINT_TEXT(65, 20, 150, 12, patientInfo);
CLODOP.SET_PRINT_STYLEA(0, "FontSize", 8);
LODOP.SET_PRINT_STYLEA(3,"FontName","微软雅黑");
// 添加体检中心
CLODOP.ADD_PRINT_TEXT(80, 20, 120, 12, center);
CLODOP.SET_PRINT_STYLEA(0, "FontSize", 8);
LODOP.SET_PRINT_STYLEA(3,"FontName","微软雅黑");
// 添加检验项目
CLODOP.ADD_PRINT_TEXT(92, 20, 180, 12, testItem);
CLODOP.SET_PRINT_STYLEA(0, "FontSize", 8);
LODOP.SET_PRINT_STYLEA(3,"FontName","微软雅黑");
// 添加日期时间 - 右中
CLODOP.ADD_PRINT_TEXT(40, 150, 60, 50, dateTime);
CLODOP.SET_PRINT_STYLEA(0, "FontSize", 6);
CLODOP.SET_PRINT_STYLEA(0, "Bold", 1);
LODOP.SET_PRINT_STYLEA(3,"FontName","仿宋");
// 添加标识 - 右上角
CLODOP.ADD_PRINT_TEXT(10, 130, 50, 10, identifier);
CLODOP.SET_PRINT_STYLEA(0, "FontSize", 9);
CLODOP.SET_PRINT_STYLEA(0, "Alignment", 3);
LODOP.SET_PRINT_STYLEA(3,"FontName","微软雅黑");
// 执行打印
if (isPreview) {
CLODOP.PREVIEW();
} else {
CLODOP.