public LetterWindow(List<SessionRow> sessions, LetterTemplate letterTemplate) { InitializeComponent(); tbKenmerk.Text = letterTemplate.Kenmerk; tbContactpersonen.Text = letterTemplate.Contactpersonen; tbTelefoon.Text = letterTemplate.Telefoon; tbEmail.Text = letterTemplate.Email; tbAvansAdres.Text = letterTemplate.AvansAdres; tbAvansLocatie.Text = letterTemplate.AvansLocatie; tbBeginKern.Text = letterTemplate.BeginKern; tbReisInformatie.Text = letterTemplate.ReisInformatie; tbVerdereInformatie.Text = letterTemplate.VerdereInformatie; tbAfzenders.Text = letterTemplate.Afzenders; tbBijlagen.Text = letterTemplate.Bijlagen; tbVoettekstLinks.Text = letterTemplate.VoettekstLinks; tbVoettekstMidden.Text = letterTemplate.VoettekstCenter; tbVoettekstRechts.Text = letterTemplate.VoettekstRechts; _experts = new List<Expert>(); _receivers = new Dictionary<int, Expert>(); _sessions = sessions; // Note: Dit ziet er misschien klote uit, maar een List.Contains check schijnt niet te werken(mogelijk zijn er dubbele expert objecten?) Dictionary<int, Expert> experts = new Dictionary<int, Expert>(); foreach (SessionRow session in sessions) { Session sessionModel = session.GetSessionModel(); foreach (KeyValuePair<int, Expert> keyValuePair in sessionModel.Experts) { if(!experts.ContainsKey(keyValuePair.Key)) experts.Add(keyValuePair.Key, keyValuePair.Value); } } // En nu weer naar een List omdat Dictionary faalt en niet kan sorten foreach (KeyValuePair<int, Expert> keyValuePair in experts) _experts.Add(keyValuePair.Value); _experts.Sort(); ExpertsToevoegen(); _controller = PAZController.GetInstance(); _ini = _controller.IniReader; _letterTemplate = letterTemplate; btnSave.IsEnabled = false; }
/** * Dit maakt de brieven om te versturen naar de experts in zijn geheel en zet ze in een PDF document */ public void CreateLetterPDF(String filename, Dictionary<int, Expert> receivers, LetterTemplate letterTemplate) { // het document(standaard A4-formaat) maken iTextSharp.text.Document document = new iText.Document(PageSize.A4, 75.0f, 75.0f, 0.0f, 0.0f); try { // Creeër een PDF pagina instantie(deze regelt de footer, meer niet) pdfPage page = new pdfPage(letterTemplate); // De writer maken die naar het document luistert en zet de stream om in een PDF-bestand PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(filename, FileMode.Create)); // Zet de PageEvent van de writer klasse naar de instantie van de pagina writer.PageEvent = page; // het document openen document.Open(); for (int rowNo = 0; rowNo < _dataGrid.Items.Count; ++rowNo) { SessionRow rowSession = (SessionRow)_dataGrid.Items[rowNo]; Session sessionModel = rowSession.GetSessionModel(); Dictionary<int, Expert> experts = sessionModel.Experts; foreach(KeyValuePair<int, Expert> expertKeyValuePair in experts) { if (!receivers.ContainsKey(expertKeyValuePair.Key)) continue; Expert expert = expertKeyValuePair.Value; document.NewPage(); // Een titel maken iText.Paragraph titel = new iText.Paragraph("Academie voor " + sessionModel.Pair.Student1.Study, FontFactory.GetFont("Arial", 12, Font.BOLD)); titel.Alignment = 1; // Subtitel maken iText.Paragraph subTitel = new iText.Paragraph(letterTemplate.AvansLocatie, FontFactory.GetFont(STANDARD_FONT_FAMILY, STANDARD_FONT_SIZE - 1)); subTitel.Alignment = 1; // elementen toevoegen aan het document document.Add(titel); // de titel toevoegen document.Add(subTitel); // de subtitel toevoegen // Leeg ruimte toevoegen document.Add(new iText.Paragraph(" ")); document.Add(new iText.Paragraph(" ")); // Bepaal het standaard font om te gebruiken in het grootste deel van het document Font standardFont = FontFactory.GetFont(STANDARD_FONT_FAMILY, STANDARD_FONT_SIZE); // Adressering document.Add(new iText.Paragraph(expert.Company, standardFont)); document.Add(new iText.Paragraph(expert.Firstname + " " + expert.Surname, standardFont)); document.Add(new iText.Paragraph(expert.Address, standardFont)); document.Add(new iText.Paragraph(expert.Postcode + " " + expert.City, standardFont)); // Leeg ruimte toevoegen document.Add(new iText.Paragraph(" ")); document.Add(new iText.Paragraph(" ")); document.Add(new iText.Paragraph(" ")); document.Add(new iText.Paragraph(" ")); // Contact informatie tabel document.Add(MakeContactInformationTable(letterTemplate)); // Leeg ruimte toevoegen document.Add(new iText.Paragraph(" ")); document.Add(new iText.Paragraph(" ")); document.Add(new iText.Paragraph(" ")); // Inhoud brief document.Add(new iText.Paragraph("Geachte heer/mevrouw " + expert.Surname + ",\r\r", standardFont)); Teacher[] teachers = new Teacher[2]; int index = -1; foreach (KeyValuePair<int, Teacher> teacherKeyValuePair in sessionModel.Teachers) teachers[++index] = teacherKeyValuePair.Value; bool isPairInvite = sessionModel.Pair.Student2 != null; string studentParagraphString = "Hierbij ontvangt u de afstudeerscriptie van onze "; if (isPairInvite) studentParagraphString += "studenten "; else studentParagraphString += "student "; studentParagraphString += sessionModel.Pair.Student1.Study + ", " + sessionModel.Pair.Student1.Firstname + " " + sessionModel.Pair.Student1.Surname + " "; if (isPairInvite) studentParagraphString += "en " + sessionModel.Pair.Student2.Firstname + " " + sessionModel.Pair.Student2.Surname + " "; // Inleiding document.Add(new iText.Paragraph(studentParagraphString + "van wie u de afstudeerbespreking zult bijwonen. Begeleidende docenten " + teachers[0].Firstname + " " + teachers[0].Surname + " en " + teachers[1].Firstname + " " + teachers[1].Surname + " zullen bij de zitting aanwezig zijn.\r\r", standardFont)); document.Add(new iText.Paragraph("De afstudeerzitting is gepland op, " + rowSession.Datum + " om " + sessionModel.Daytime.GetStarttime() + ", in lokaal " + rowSession.Lokaal + " van Avans Hogeschool, " + letterTemplate.AvansAdres + " te " + letterTemplate.AvansLocatie + ".\r\r", standardFont)); // Kern van de brief document.Add(new iText.Paragraph(letterTemplate.BeginKern + "\r\r", standardFont)); document.Add(new iText.Paragraph(letterTemplate.ReisInformatie + "\r\r", standardFont)); document.Add(new iText.Paragraph(letterTemplate.VerdereInformatie + "\r\r", standardFont)); // Afsluiting document.Add(new iText.Paragraph("Wij danken u hartelijk voor uw medewerking.", standardFont)); document.Add(new iText.Paragraph("Met vriendelijke groet,\r\r", standardFont)); document.Add(new iText.Paragraph(letterTemplate.Afzenders, standardFont)); // Verander de font style tijdelijk standardFont.SetStyle(Font.ITALIC); document.Add(new iText.Paragraph("Coördinatoren stage en afstuderen", standardFont)); // Verander de font style weer terug standardFont.SetStyle(Font.NORMAL); document.Add(new iText.Phrase("", standardFont)); iText.Paragraph bijlagenParagraph = new iText.Paragraph("Bijlage(n): " + letterTemplate.Bijlagen, standardFont); bijlagenParagraph.FirstLineIndent = -55; bijlagenParagraph.IndentationLeft = 75; document.Add(bijlagenParagraph); expert.WasChanged = false; } } // toon bericht dat exporteren naar PDF gelukt is MessageBox.Show("Exporteren gelukt! Bestand is geëxporteerd naar " + filename, "Melding"); // open het PDF-bestand System.Diagnostics.Process.Start(filename); } catch (PdfException ex) { // toon bericht als er iets fout gaat MessageBox.Show(ex.Message); } finally { // het document sluiten document.Close(); } }
public pdfPage(LetterTemplate letterTemplate) : base() { _letterTemplate = letterTemplate; }
/** * Dit maakt de contact informatie tabel zoals te zien is bovenaan de brief bij de adressering * Return: De gemaakte tabel */ private PdfPTable MakeContactInformationTable(LetterTemplate letterTemplate) { // Maak een tabel met het opgegeven aantal kolommen PdfPTable rosterTable = new PdfPTable(CONTACT_INFORMATION_NUM_COLUMNS); // Bepaal de breedte voor elke kolom rosterTable.SetWidths(new float[] { 0.15f, 0.3f, 0.15f, 0.4f }); // Breedte van tabel instellen rosterTable.WidthPercentage = 100; // Bepaal het standaard font om te gebruiken bij deze tabel Font standardFont = FontFactory.GetFont(STANDARD_FONT_FAMILY, STANDARD_FONT_SIZE - 2); // Bepaal het standaard font(vet) om te gebruiken bij deze tabel Font standardBoldFont = FontFactory.GetFont(STANDARD_FONT_FAMILY, STANDARD_FONT_SIZE - 2, Font.BOLD); // START EERSTE RIJ rosterTable.AddCell(MakeTableCell("ons kenmerk", standardBoldFont, true)); rosterTable.AddCell(MakeTableCell(letterTemplate.Kenmerk, standardFont)); rosterTable.AddCell(MakeTableCell("contactpersonen", standardBoldFont, true)); rosterTable.AddCell(MakeTableCell(letterTemplate.Contactpersonen, standardFont)); // EINDE EERSTE RIJ // START TWEEDE RIJ rosterTable.AddCell(MakeTableCell("datum", standardBoldFont, true)); rosterTable.AddCell(MakeTableCell(DateTime.Now.Day + "/" + DateTime.Now.Month + "/" + DateTime.Now.Year, standardFont)); rosterTable.AddCell(MakeTableCell("telefoon", standardBoldFont, true)); rosterTable.AddCell(MakeTableCell(letterTemplate.Telefoon, standardFont)); // EINDE TWEEDE RIJ // START DERDE RIJ rosterTable.AddCell(MakeTableCell("onderwerp", standardBoldFont, true)); rosterTable.AddCell(MakeTableCell("Afstudeerzitting", standardFont)); rosterTable.AddCell(MakeTableCell("e-mail", standardBoldFont, true)); rosterTable.AddCell(MakeTableCell(letterTemplate.Email, standardFont)); // EINDE DERDE RIJ return rosterTable; }
public void LetterWindowSaveTemplateClicked(LetterTemplate updatedTemplate) { LetterTemplateMapper.Save(updatedTemplate); }
public void BriefMakenBevestigingClicked(Dictionary<int, Expert> receivers, LetterTemplate letterTemplate) { // dit zorgt ervoor dat er geen filters worden toegepast in de PDF uitdraai MainWindow.textboxSearch.Text = ""; string fileName; if (MainWindow.OpenNewSaveDialog("Bevestigingsbrieven PAZ", ".pdf", "PDF (.pdf)|*.pdf", out fileName) == true) { // maak en exporteer als pdf PDFexporter.CreateLetterPDF(fileName, receivers, letterTemplate); } }