private void GenerateGeneralPdf(GeneralTest generalTest, List<Board> boards, bool isUserReport) { BaseFont baseFont; try { baseFont = BaseFont.CreateFont(fontFile, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); PdfReader rdr = new PdfReader(Util.GetBasePath() + generalTempletFile); PdfStamper stamper; string pdfFile; if (isUserReport) { pdfFile = GetUsrGeneralPdfName(generalTest.FinishReason,generalTest.Key, boards[0].GeneralTestSN, boards[0].IsGeneralTestPassed); } else pdfFile = GetDiagnoseGeneralPdfName(generalTest.Key); stamper = new PdfStamper(rdr, new System.IO.FileStream(pdfFile, System.IO.FileMode.Create)); stamper.AcroFields.AddSubstitutionFont(baseFont); if (isUserReport) { SetHeadFieldValue(stamper, "pageHead", generalUserReportTitle); SetFieldValue(stamper, "Head", generalUserReportTitle); } else { if (generalMessageLogFile.GetFileName(generalTest.Key) != null) SetFieldValue(stamper, "pageHead", Util.GetMD5(generalMessageLogFile.GetFileName(generalTest.Key))); else SetFieldValue(stamper, "pageHead", generalDiagReportTitle); SetHeadFieldValue(stamper, "Head", generalDiagReportTitle); } stamper.AcroFields.SetFieldProperty("Head", "textsize", 20.0f, null); stamper.AcroFields.SetFieldProperty("Head", "textsize", 20.0f, null); SetHeadFieldValue(stamper, "ver", string.Format("{0} Build:{1}", version.Ver, version.Build)); SetHeadFieldValue(stamper, "data", generalTest.Key); SetHeadFieldValue(stamper, "gDate", Util.FormateDateTime2(DateTime.Now)); SetFieldValue(stamper, "tester", generalTest.Tester); SetFieldValue(stamper, "startTime", Util.FormateDateTime(generalTest.StartTime)); SetFieldValue(stamper, "planRunningTime", string.Format("{0}/{1}", Util.FormateDurationSecondsMaxHour(generalTest.PlanRunningTime), Util.FormateDurationSecondsMaxHour(generalTest.RunningTime))); SetFieldValue(stamper, "finishReason", generalTest.FinishReason); string names = ""; string sns = ""; string passes = ""; bool isPass = true; for (int i = 0; i < boards.Count; i++) { names += boards[i].EqName + "\n"; if (boards[i].GeneralTestSN != "") sns += boards[i].GeneralTestSN + "\n"; else sns += "非待测" + "\n"; passes += boards[i].IsGeneralTestPassed ? "PASS\n" : "FAIL\n"; isPass &= boards[i].IsGeneralTestPassed; } names += endString; sns += endString; passes += endString; SetFieldValue(stamper, "boardName", names); SetFieldValue(stamper, "boardSn", sns); SetFieldValue(stamper, "isBoardPass", passes); if (isPass) { SetFieldValue(stamper, "IsPass", "PASS"); stamper.AcroFields.SetFieldProperty("IsPass", "textsize", 38.0f, null); BaseColor bc = new BaseColor(00,64,00);//DarkGreen stamper.AcroFields.SetFieldProperty("IsPass", "textcolor", bc, null); } else { SetFieldValue(stamper, "IsPass", "FAIL"); stamper.AcroFields.SetFieldProperty("IsPass", "textsize", 38.0f, null); stamper.AcroFields.SetFieldProperty("IsPass", "textcolor", BaseColor.RED, null); } stamper.FormFlattening = true;//不允许编辑 stamper.Close(); rdr.Close(); } catch (Exception ee) { LogHelper.GetLogger<Report>().Error(ee.Message); LogHelper.GetLogger<Report>().Error(ee.StackTrace); //MessageBox.Show(ee.Message); } }
public void Save2DB(GeneralTest generalTest) { TMain main = new TMain(); main.Key = generalTest.Key; main.Start = generalTest.StartTime; main.RunningTime = generalTest.RunningTime; main.Tester = generalTest.Tester; main.TestType = TEST_TYPE_GENERAL; main.IsPass = generalTest.IsPass() ? TEST_RESULT_PASS : TEST_RESULT_FAIL; main.Note = generalTest.FinishReason; mainADO.Insert(main); List<Board> boards = generalTest.Cabinet.GetGeneralTestBoardsList(); foreach (var b in boards) { TBoard board = new TBoard(); board.Id = Summer.System.Util.DbHelper.GenerateKey(); board.Key = generalTest.Key; board.Name = b.EqName; board.Type = b.BoardType; board.Component = ""; //综合测试没有组件,所以设置为空 board.Sn = b.GeneralTestSN; board.IsPass = b.IsGeneralTestPassed ? TEST_RESULT_PASS : TEST_RESULT_FAIL; boardADO.Insert(board); } }
public void GenerateUserPdf(GeneralTest generalTest) { //生成用户报告 List<Board> boards = generalTest.Cabinet.GetGeneralTestBoardsList(); List<Board> allboards = generalTest.Cabinet.GetAllGeneralTestBoardsList(); foreach (var b in boards) { List<Board> tmpBoards = new List<Board>(); tmpBoards.Add(b); GenerateGeneralPdf(generalTest, tmpBoards, true); } //生成诊断报告(诊断报告不包含log文件,因为log文件比较大,包含后压缩时间太长) //GenerateGeneralPdf(generalTest, boards, generalMessageLogFile.GetFileName(generalTest.Key), false); GenerateGeneralPdf(generalTest, allboards, false); }