protected MemoryStream GeneratePDF(DateTime from, DateTime to, Student student) { MemoryStream memstream = new MemoryStream(); Document Report = new Document(PageSize.LETTER); Report.SetMargins(36, 36, 36, 60); PdfWriter writer = PdfWriter.GetInstance(Report, memstream); Report.Open(); PdfContentByte content = writer.DirectContent; /* Header and footer stuff - work to be done on this before it can be implemented */ PdfPageEventHandler PageEventHandler = new PdfPageEventHandler(); writer.PageEvent = PageEventHandler; PageEventHandler.bottomCenter = "Printed " + DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString(); PageEventHandler.bottomLeft = student.getDisplayName(); Report.Add(SLReports.Attendance.AttendancePDFParts.livingSkyHeading()); Report.Add(SLReports.Attendance.AttendancePDFParts.pageTitle(content, from, to)); Report.Add(SLReports.Attendance.AttendancePDFParts.studentNamePlate(student)); Report.Add(SLReports.Attendance.AttendancePDFParts.attendanceTable(student)); Report.Add(SLReports.Attendance.AttendancePDFParts.attendanceSummary(student)); Report.Close(); return(memstream); }
public static MemoryStream GeneratePDF(School school, List <Student> students, bool doubleSidedMode = true) { MemoryStream memstream = new MemoryStream(); Document PDFDocument = new Document(PageSize.LETTER); PdfWriter writer = PdfWriter.GetInstance(PDFDocument, memstream); PDFDocument.Open(); PdfContentByte content = writer.DirectContent; PdfPageEventHandler PageEventHandler = new PdfPageEventHandler(); writer.PageEvent = PageEventHandler; PageEventHandler.DoubleSidedMode = doubleSidedMode; PageEventHandler.ShowOnFirstPage = true; PageEventHandler.bottomCenter = "Printed " + DateTime.Now.ToLongDateString(); PageEventHandler.bottomLeft = "Student list by grade"; // Organize students into grades SortedDictionary <string, List <Student> > studentsByGrade = new SortedDictionary <string, List <Student> >(); foreach (Student student in students) { if (!studentsByGrade.ContainsKey(student.getGradeFormatted())) { studentsByGrade.Add(student.getGradeFormatted(), new List <Student>()); } studentsByGrade[student.getGradeFormatted()].Add(student); } foreach (KeyValuePair <string, List <Student> > grade in studentsByGrade) { // Show a page header PDFDocument.Add(header(school)); // Show a list PDFDocument.Add(studentList(grade.Value, grade.Key)); // Page break after each grade PDFDocument.NewPage(); } PDFDocument.Close(); return(memstream); }
protected MemoryStream GeneratePDF(DateTime from, DateTime to, List <Student> students) { MemoryStream memstream = new MemoryStream(); Document Report = new Document(PageSize.LETTER); Report.SetMargins(36, 36, 36, 60); PdfWriter writer = PdfWriter.GetInstance(Report, memstream); Report.Open(); PdfContentByte content = writer.DirectContent; /* Header and footer stuff - work to be done on this before it can be implemented */ PdfPageEventHandler PageEventHandler = new PdfPageEventHandler(); writer.PageEvent = PageEventHandler; PageEventHandler.DoubleSidedMode = false; // Doesn't work so well with large multi-student documents... foreach (Student student in students) { PageEventHandler.bottomCenter = "Printed " + DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString(); PageEventHandler.bottomLeft = student.getDisplayName(); PageEventHandler.ResetPageNumbers(Report); Report.Add(SLReports.Attendance.AttendancePDFParts.livingSkyHeading()); Report.Add(SLReports.Attendance.AttendancePDFParts.pageTitle(content, from, to)); Report.Add(SLReports.Attendance.AttendancePDFParts.studentNamePlate(student)); Report.Add(SLReports.Attendance.AttendancePDFParts.attendanceTable(student)); Report.Add(SLReports.Attendance.AttendancePDFParts.attendanceSummary(student)); Report.NewPage(); Report.Add(new Phrase(String.Empty)); } Report.Close(); return(memstream); }