public async Task SendPrintAsync(string who, BoatClean bc, string actionName)
 {
     foreach (var connectionId in PrintHub.connections.GetConnections(who))
     {
         await _hub.Clients.Client(connectionId).SendAsync(actionName, bc);
     }
 }
        /// <summary>
        /// 船舶清污完工证
        /// </summary>
        /// <param name="m"></param>
        private void PrintBoatClean(BoatClean m)
        {
            Log.Logs += $"正在打印BoatClean:{m.Name}\r";

            Word.Application thisApplication = new Word.ApplicationClass();
            wApp = thisApplication;
            string tmpDocFile   = AppDomain.CurrentDomain.BaseDirectory + folder + Properties.Settings.Default.PrintBoatCleanDocx;
            object templatefile = tmpDocFile;

            wDoc = wApp.Documents.Add(ref templatefile, ref missing, ref missing, ref missing); //在现有进程内打开文档
            wDoc.Activate();                                                                    //当前文档置前

            //填充数据
            WordReplace(wApp, "#Name#", m.Name);
            WordReplace(wApp, "#CarNo#", m.CarNo);
            WordReplace(wApp, "#Company#", m.Company);
            WordReplace(wApp, "#Voyage#", m.Voyage.ToString());
            WordReplace(wApp, "#Tonnage#", m.Tonnage.ToString());
            WordReplace(wApp, "#ResponseId#", m.ResponseId);
            WordReplace(wApp, "#Address#", m.Address);
            WordReplace(wApp, "#CreatedAt#", m.CreatedAt.ToString("yyyy-MM-dd HH:mm"));
            WordReplace(wApp, "#EndTime#", m.EndTime.ToString());
            PrintTime(wApp);

            object background = false; //这个很重要,否则关闭的时候会提示请等待Word打印完毕后再退出,加上这个后可以使Word所有
            object filename   = AppDomain.CurrentDomain.BaseDirectory + createdfolder + m.Name + ".docx";

            wDoc.SaveAs(ref filename, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref
                        missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);
            wDoc.PrintOut(ref background, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref
                          missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
                          ref missing);
            object saveOption = Word.WdSaveOptions.wdSaveChanges;

            wDoc.Close(ref saveOption, ref missing, ref missing); //关闭当前文档,如果有多个模版文件进行操作,则执行完这一步后接着执行打开Word文档的方法即可
                        saveOption = Word.WdSaveOptions.wdDoNotSaveChanges;

            wApp.Quit(ref saveOption, ref missing, ref missing); //关闭Word进程
        }