基于clodop和Chrome原生打印的标签实现方法与性能对比

今天想看看,基于clodop和Chrome原生打印的标签实现方法与性能对比。先看看DeepSeek关于这个问题的回答!


CloudPrint 和 Chrome 原生打印的区别

基本概念差异

  1. CloudPrint (Clodop)

    • 是基于云的打印服务解决方案
    • 需要安装专门的客户端程序
    • 支持跨平台、跨设备打印
  2. Chrome 原生打印

    • 是浏览器内置的打印功能
    • 直接调用操作系统打印接口
    • 不需要额外安装软件

功能特性对比

特性CloudPrint (Clodop)Chrome 原生打印
安装要求需要安装客户端无需安装
跨平台支持优秀一般
打印预览自定义预览界面浏览器标准预览
标签打印支持专业支持基本支持
打印精度控制更精细一般
批量打印支持更好有限支持
打印模板管理有专门管理系统
网络打印支持远程打印仅本地打印

标签打印的具体区别

  1. 打印精度

    • Clodop: 提供更高精度的DPI控制,适合精细标签
    • Chrome: 依赖系统打印设置,精度有限
  2. 模板支持

    • Clodop: 支持保存和调用打印模板
    • Chrome: 每次需要重新设置格式
  3. 批量处理

    • Clodop: 优化了批量标签打印流程
    • Chrome: 批量打印效率较低
  4. 特殊格式

    • Clodop: 支持条形码、二维码等特殊标签格式
    • Chrome: 支持有限

当然主角 Claude还是采用➡️ Windows下用docker desktop搭建Claude code 一文中的方式!

  1. 首先使用clodop(老肚皮),主要缺点是需要给每个电脑安装客户端!再就是免预览打印需要买授权。
    在这里插入图片描述
    第一次提示词说的不对,说成了lodop,马上改!
    在这里插入图片描述
    看看成果!很细节的做了个测试页面~
    在这里插入图片描述
  • 老肚皮打印预览效果!消耗2500积分(实现代码在文末)

在这里插入图片描述


  1. 再试试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.