现有的企业ERP系统需要与另一个公司的WMS系统对接,出库单需要传递给WMS的API接口一个图片格式的ERP出库单附件,进行出库单核验,现有的ERP打印单据使用的Web打印控件Lodop实现的,看了下官方文档,发现只有导出当前页面到图片文件的功能,现在需求是需要打印的出库单样式的图片不是ERP出库单的操作页面,于是想变通下解决这个问题。
①将打印单据保存为图片文件
既然Lodop的Web打印控件支持导出页面为图片,那么就做一个出库单样式的独立页面用于生成图片,最终页面效果如下:
②Lodop打印控件支持加载指定url实现动态生成单据图片
Lodop的Web打印控件还支持加载指定URL页面进行打印的功能,也就可以给控件提供一个动态加载单据页面的URL地址来生成图片了,代码如下:
//打印导出到图片文件
function printtoimgfile() {
LODOP = getLodop();
LODOP.PRINT_INIT("销售提货单");
LODOP.ADD_PRINT_URL(0, 0, "100%", "100%", "TiHuo?ordercode="+<%=ViewData["OrderCode"] %>); //动态加载单据模板页面
LODOP.SET_SAVE_MODE("FILE_PROMPT", false); //设置不再弹出选择保存文件提示框
LODOP.SET_SAVE_MODE("SAVEAS_IMGFILE_EXENAME", ".jpg");
LODOP.SAVE_TO_FILE("D:\\upload\\wms\\<%=ViewData["OrderCode"] %>.jpg"); //本地保存路径
}
③后台调取接口时候加载图片文件为Base64格式传递给接口
//读取提货单附件图片 D:\wms\派车单号.jpg
String filename = @"D:\wms\"+sendorder.Order_Code+".jpg";
this.data=ImageToBase64(filename);
this.attachName= sendorder.Order_Code+".jpg";
总结,最后实现了Web打印单据一键转Base64,自动上传API的终极方案