Live2D

Word模板填充数据并下载为PDF

 

 

/// <summary>
        /// 下载准考证
        /// </summary>
        /// <param name="examPlanId"></param>
        /// <returns></returns>public ActionResult DownZKZ(int examPlanId)
        {var faceImages = FaceImageContract.GetFaceImages(m => m.PersonalId==personalId && !m.IsDelete).FirstOrDefault();
            if (faceImages == null)
            {
                return Json(new { success = false, msg = "请先上传头像" });
            }
            var document = new Aspose.Words.Document(Server.MapPath("/准考证模板.doc"));
            var builder = new Aspose.Words.DocumentBuilder(document);
            var table = document.GetChildNodes(Aspose.Words.NodeType.Table, true)[0] as Aspose.Words.Tables.Table;//克隆table
                var lastTable = table;

                #region 每人一页 开始已默认有一页
                for (int i = 1; i < enrollInfos.Count; i++)
                {
                    var newTable = (Aspose.Words.Tables.Table)lastTable.Clone(true);

                    //创建段落
                    var paragraph = new Aspose.Words.Paragraph(document);
                    //第一个表格末尾加段落
                    lastTable.ParentNode.InsertAfter(paragraph, lastTable);
                    Aspose.Words.Run pageBreakRun = new Aspose.Words.Run(document, Aspose.Words.ControlChar.PageBreak);
                    paragraph.AppendChild(pageBreakRun);

                    lastTable.ParentNode.InsertAfter(newTable, paragraph);

                    lastTable = newTable;
                }
                #endregion

                //考生须知
                var needKnow = "不得遗失、涂改、转借$考试开始 15 分钟后考生不得进入考场,考试开始 30 分钟考生方可交卷离开考场$考生必须对号入座,保持安静,遵守考场规则";
                var examNeedKnows = needKnow.Split(new char[] { '$' }, StringSplitOptions.RemoveEmptyEntries).ToList();

                for (int i = 0; i < enrollInfos.Count; i++)
                {
                    var tableIndex = i;
                    var student = enrollInfos[i];

                    //准考证号
                    builder.MoveToCell(tableIndex, 2, 1, 0);
                    builder.Write("xxxxxxx");

                    //姓名
                    builder.MoveToCell(tableIndex, 2, 3, 0);
                    builder.Write("张三");

                    //图片
                    builder.MoveToCell(tableIndex, 2, 4, 0);
                    builder.InsertHtml($"<img src='{faceImages?.Url}' width='106' height='123'>");

                    //考试科目
                    builder.MoveToCell(tableIndex, 3, 1, 0);
                    builder.Write("语文");

                    //考点
                    builder.MoveToCell(tableIndex, 4, 1, 0);
                    builder.Write(departmentInfo?.Name);

                    //考试时间
                    builder.MoveToCell(tableIndex, 5, 1, 0);
                    builder.Write($"{examBeginTime:yyyy-MM-dd HH:mm:ss} 至 {examEndTime:HH:mm:ss}");

                    //考试地址
                    builder.MoveToCell(tableIndex, 6, 1, 0);
                    builder.Write(examAddress);

                    //考生须知
                    if (examNeedKnows.Count() > 0)
                    {
                        builder.MoveToCell(tableIndex, 8, 0, 0);
                        for (int j = 0; j < examNeedKnows.Count; j++)
                        {
                            builder.Write(j + 1 + "." + examNeedKnows[j]);
                            builder.Writeln();
                        }
                    }
                }

            using (var stream = new MemoryStream())
            {
                document.Save(stream, Aspose.Words.SaveFormat.Pdf);
                return File(stream.ToArray(), "application/pdf", "语文(准考证).pdf");
            }
        }

 

posted @ 2022-08-04 14:35  webmtjj  阅读(156)  评论(0)    收藏  举报