使用打印机名选择接口实现批量静默打印【SelectPrinterExt,P...
金蝶云社区-天冥异
天冥异
2人赞赏了该文章 1258次浏览 未经作者许可,禁止转载编辑于2018年08月02日 20:16:40

1、选择打印机名称:
private selectPrinterNameButtonClick(e){
        //参数 0:只返回选中的打印机名称,1:同时返回当前可用打印机列表,100:只返回当前可用的打印机列表
        this.View.AddAction("SelectPrinterExt",0)
}


protected override CustomEvents(e){
        //参数0 e.EventArgs:{"Data":"{\"Selected\":true,\"PrinterName\":\"Doro PDF Writer\" }","RetType":0}
        //参数1 e.EventArgs:{"Data":"{\"Selected\":true,\"PrinterName\":\"Doro PDF Writer\" ,\"AllPrinterNames\":[\"Microsoft XPS Document Writer\",\"Doro PDF Writer\"]}","RetType":1}
        //参数100 e.EventArgs:{"Data":"{\"Selected\":true ,\"AllPrinterNames\":[\"Microsoft XPS Document Writer\",\"Doro PDF Writer\"]}","RetType":100}
        var printNameObject =  e.EventArgs;
}


2、获取名称后调用打印进行静默打印;

/// <summary>
/// 打印
/// </summary>
/// <param name="printJobId">打印任务ID</param>
/// <param name="printType">打印类型</param>
/// <param name="printer">打印机ID</param>
public void NoteTemplateOperation(string printJobId, string printType, object printer = null, string printBarName = null)
{
    JSONObject jsonObj = new JSONObject();
    jsonObj.Put("pageID", this.View.PageId);
    jsonObj.Put("printJobId", printJobId);
    jsonObj.Put("action", printType);

    string action = string.Empty;
    if (printType.EqualsIgnoreCase("preview") || printType.EqualsIgnoreCase("PrintMergePreview"))
    {
        action = JSAction.printPreview;
        jsonObj.Put("printBarName", printBarName);
    }
    else if (printType.EqualsIgnoreCase("print") || printType.EqualsIgnoreCase("PrintMerge"))
    {
        action = JSAction.print;
        jsonObj.Put("printerAddress", printer.IsNullOrEmpty() == true ? string.Empty : Convert.ToString(printer));
    }

    this.View.AddAction(action, jsonObj);
}

赞 2