XML打印功能包含XML设计器与XML打印二部分,设计器设计好模板后,可以使用DHCOPPrint.CAB或LODOP来打印模板,以下介绍二种打印功能
引用插件(二选一)
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
中写入以上相应的语句即可。
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});
printListByText:true | true按label打印列表。false按html-table方式打印。默认false,一般应使用true |
LetterSpacing:0 | 控制字符间空隙。0正常空隙,-2紧凑或其它数值。默认0 |
preview:0 | 0打印,1预览。默认0 |
tableBorder:0 | 默认是0, 数字表示线宽。替换listHtmlTableBorder |
tdnowrap:true | true时列宽固定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
打印iMedical系统的CSP
中引入,在IE下使用DHCOPPrint.CAB
打印请使用以下类方法引用控件
d ##class(web.DHCBillPrint).InvBillPrintCLSID()
iMedical系统的组件
中引入,使用隐藏的CUSTOM
元素,在Custom Expression
中写入以上相应的语句即可。
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);
// 第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);
}
});
// 回调方法入参
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);
增加获得打印PDF文件后的base64内容功能
// 通过虚拟打印机打印pdf,然后再获得pdf文件的base64内容
// 第5入参{String}类型, 为打印机任务名。如果虚拟打印机设置文档名与任务名一致时,也为pdf文件名
// 第6入参为{Obejct}类型,
// PrtDevice: {String} 强制使用包含Zan名称的第一台打印机打印,优先级高于XML模板中打印机配置
// onCreatePDFBase64: {function} 为得到base64内容的回调方法
DHC_PrintByLodop(getLodop(),itmInfo,listInfo,ajson,"pdf1234",
{printListByText:true,tdnowrap:false,PrtDevice:"Zan",onCreatePDFBase64:function(pdfbase64){
console.log(pdfbase64);
}
});
第#页/共&页
提供强制引用CLodop打印功能,解决某些IE使用LODOP打印后,系统超时问题
// 强制初始化为CLodop
d ##class(web.DHCXMLPConfig).LODOPInit("1")
或使用JS引用
<!--强制初始化为CLodop-->
<script type="text/javascript" src="../scripts_lib/lodop/LodopFuncs.js?needCLodop=1" charset="UTF-8"></script>
invoice
节点中属性PrtPage="A5"
printvalue
,defaultvalue
,fontsize
,fontbold
,fontname
属性不存在时,打印不异常问题txtdata
增加width
与height
属性,如果内容超出时自动换行打印,不配置默认自由长度打印。LandscapeOrientation
属性值增加Z值,表示即打即停,且纸张设置选为手动设置纸张大小,height
表示底边留白高度。此属性只支持lodop打印txtdatapara
增加属性barcodetype
,此属性只支持lodop
打印DHC_PrintBYLodop
方法,打印xml及数据ListData
节点增加BackSlashWidth
属性,定义list输出结束后打印反斜线宽度。用于处方结束处PICdatapara
节点上增加width
与height
属性,可实现图片缩放功能