bsp

XML打印功能及更新说明

XML打印功能包含XML设计器与XML打印二部分,设计器设计好模板后,可以使用DHCOPPrint.CAB或LODOP来打印模板,以下介绍二种打印功能

使用LODOP打印XML

  1. 引用插件(二选一)

    • iMedical系统的CSP中引入,在IE/Chrome下使用LODOP打印时请使用以下类方法引用相关

      d ##class(web.DHCXMLPConfig).LODOPInit()    // IE下引用LODOP,Chrome下引用CLODOP
      
      // 2020-09-18 增加参数NeedCLodop,默认"0"
      d ##class(web.DHCXMLPConfig).LODOPInit("1")   // 强制使用CLodop,可用效解决打印img导致iMedical超时问题
      
    • iMedical系统的组件中引入,使用隐藏的CUSTOM元素,在Custom Expression中写入以上相应的语句即可。

  2. JS脚本代码示例

    DHCP_GetXMLConfig("encryptItemId","xmlFlagName");  //xmlFlagName为XML模板, 用于加载XML内容
    var LODOP = getLodop();
    /*
     @description 使用LODOP打印XML
     @param {LODOP} LODOP 控件对象
     @param {String} inpara 元素对应的打印值
     @param {String} inlist 列表对应的打印值
     @param {Array} jsonArr [可选] 动态追加打印内容
     @param {String} reportNote [可选] 打印任务名称,可区别本次打印任务
     @param {Object} options [可选] 打印配置信息
    */
    DHC_PrintByLodop(LODOP,inpara,inlist,jsonArr,reportNote,{printListByText:true});
    
    • 入参详细内容
      • @param {LODOP} LODOP 控件对象
      • @param {String} inpara 元素对应的打印值 name_$c(2)_zhangsha^ patno_$c(2)_000009^ img1_$c(2)_data:image/png;base64,iVAAA...AA^ img2_$c(2)_http://172.0.0.1/imedical/web/images/xx/xx.gif^ img3_$c(2)_c:\\xx.gif
      • @param {String} inlist 列表对应的打印值 DrugName1^Price1^DrugUnit1^Qty1^PaySum1_$c(2) _DrugName2^Price2^DrugUnit2^Qty2^PaySum2_$c(2) _DrugName3^Price3^DrugUnit3^Qty3^PaySum3
      • @param {Array} jsonArr [可选] 动态追加打印内容 [{type:"invoice",PrtDevice:"pdfprinter"},{type:"line",sx:1,sy:1,ex:100,ey:100},{type:"text",name:"patno",value:"0009",x:10,y:10,isqrcode:true,lineHeigth:5}]
      • @param {String} reportNote [可选] 打印任务名称,可区别本次打印任务
      • @param {Object} options [可选] 打印配置信息
        printListByText:truetrue按label打印列表。false按html-table方式打印。默认false,一般应使用true
        LetterSpacing:0控制字符间空隙。0正常空隙,-2紧凑或其它数值。默认0
        preview:00打印,1预览。默认0
        tableBorder:0默认是0, 数字表示线宽。替换listHtmlTableBorder
        tdnowrap:truetrue时列宽固定800mm。false时为二列间宽度,内容可自动换行
        pdfDownload:false得到打印后的PDF文件并下载下来
        onCreatePDFBase64:undefined值为函数时,会把把PDF文件转成base64字符串,以入参方式传给函数
        PrtDevice:undefined强制设置打印机名称
        columnTitle:undefined用于每页重打。如:"ColTitle1^ColTitle2^ColTitle3^ColTitle4"
        pageShowColunmTitle:false是否每页显示表头。默认不显示
        pageTableStartPostion:"ONEPAGE"第一页启始位置一样。为数字时表示启始位置yrow值单位mm。默认ONEPAGE
        rowContentFit: false默认false 行内容是否自动换行。替换listHtmlTableWordWrapFlag
        rowHeightExpand: false默认false 是否推动表格后面元素位置
        listAfterCallback:function默认null,当表格打印完成后,回调此函数 20230224
    • 推荐使用CLODOP打印

使用CAB打印XML

  1. 引入插件(二选一)
    • iMedical系统的CSP中引入,在IE下使用DHCOPPrint.CAB打印请使用以下类方法引用控件

      d ##class(web.DHCBillPrint).InvBillPrintCLSID()
      
    • iMedical系统的组件中引入,使用隐藏的CUSTOM元素,在Custom Expression中写入以上相应的语句即可。

  2. JS脚本代码示例

    DHCP_GetXMLConfig("encryptItemId","xmlFlagName");  //xmlFlagName为XML模板, 用于加载XML内容
    var PObj = document.getElementById("ClsBillPrint");
    /*
      @description 使用LODOP打印XML
      @param {HTMLObject} PObj 控件对象
      @param {String} inpara 元素对应的打印值。和lodop的差区在不能支持img-base64打印
      @param {String} inlist 列表对应的打印值
      @param {Array} jsonArr [可选] 动态追加打印内容
      @param {Float} invHeight [可选] 票据的高度。CAB中判断打印换页是:发现元素位置top超过height就会换页打印,如果发现一个元素超过一页后,后面所有元素都会分页打印。通过invHeight可以解决。2018-09-20 增加invHeight 分页处理。默认空
    */
    DHCP_XMLPrint(PObj, inpara, inlist, jsonArr,invHeight);
    

更新日志

2024-03-07

// 第6入参为增加配置项encoderOptions,encoderOptions是0到1间的一个小数,表示压缩比例
DHC_PrintByLodop(getLodop(),itmInfo,listInfo,ajson,"xmlname",
      {printListByText:true,tdnowrap:false,encoderOptions:0.2,onCreatePDFBase64:function(pdfbase64){
		console.log(pdfbase64);
	}
});

2023-02-24

  // 回调方法入参
  listAfterCallback({
      PrinterObj:LODOP,  /*当前打印对象*/
      tableTop: parseInt(tableTop), /*表格的top位置*/
      tableLeft: parseInt(tableLeft), /*表格的left位置*/
      rowHeight:rowHeight, /*每一行的行高多少*/
      y: parseInt(tableTop) + ((currPageRowNo + 1) * rowHeight), /*行的起始y位置*/
      x: tableLeft, /*行的起始x位置*/
      currPageRowNo: currPageRowNo, /**当前行号*/
      pageRows:xmlPageRows, /*一页打印多少行数据*/
      backSlashWidth:xmlBackSlashWidth /*表格反斜线宽度*/
  });
var otherCfg = {};			
otherCfg.printListByText = true;
/*打印列表结束回调。翻页时只有最后一张会进入此方法一次*/
otherCfg.listAfterCallback = function(cfg){
    if (cfg.currPageRowNo!=pageRows){  // 数据不满行时才打印反斜线
        // ADD_PRINT_LINE(起点y,起点x,结束点y,结束点x,0=实线,2=线宽)
	    cfg.PrinterObj.ADD_PRINT_LINE(cfg.y + "mm", "80mm", (parseInt(cfg.y)+10)+"mm", "60mm", 0, 2);
    }
};
DHC_PrintByLodop(getLodop(),itmInfo,listInfo,exPrintJson,"打印任务名", otherCfg);

2021-11-25

2021-05-23

2021-05-20

2021-04-19

2021-01-26

2020-11-17

2020-09-18

2020-09-10

2019-09-06

版本1,0,0,83

2019-07-24

版本1,0,0,82

2019-07-09

版本1,0,0,81

2018-10-11

2017-11-30

版本1,0,0,65

2017-06-12

版本1,0,0,64

2017-06-08

版本1,0,0,63

2017-04-06

版本1,0,0,56

2017-2-10

2016-10-26

说明