private void btnConvert_Click(object sender, EventArgs e) { this.Cursor = Cursors.WaitCursor; try { PdfConverter pdfConverter = new PdfConverter(); // set the license key pdfConverter.LicenseKey = "B4mYiJubiJiInIaYiJuZhpmahpGRkZE="; // save the PDF bytes in a file on disk string outFilePath = Path.Combine(Application.StartupPath, "ConvertHtmlString.pdf"); pdfConverter.SavePdfFromHtmlStringToFile(textBoxHtmlString.Text, outFilePath, textBoxBaseUrl.Text.Trim()); DialogResult dr = MessageBox.Show("Open the rendered file in an external viewer?", "Open Rendered File", MessageBoxButtons.YesNo); if (dr == DialogResult.Yes) { System.Diagnostics.Process.Start(outFilePath); } } catch (Exception ex) { MessageBox.Show(ex.Message); return; } finally { this.Cursor = Cursors.Arrow; } }
/// <summary> /// 将HTML文件转换为PDF文件 /// </summary> /// <param name="templateFile">模板文件名称</param> /// <param name="values">需要填充的值</param> /// <param name="impactOnCurrentYearData">表格形式的值</param> /// <param name="futureImpactData">表格形式的值</param> /// <returns>PDF文件路径</returns> public static string HtmlConvertToPDFWithComments(HtmlTempalteType templateType, Dictionary <string, string> values, List <SubmissionApprovalRecord> records) { var html = GenerateHtmlFromTemplateWithComments(templateType, values, records); var pdfConverter = new PdfConverter(); string filePath = ConfigurationManager.AppSettings["HtmlConversionFolder"]; string serverPath = HttpContext.Current.Request.PhysicalApplicationPath + filePath; string fileNameWithPath = serverPath + @"\" + Guid.NewGuid().ToString() + ".pdf"; pdfConverter.SavePdfFromHtmlStringToFile(html, fileNameWithPath); return(fileNameWithPath); }
public ActionResult GenererPDF(int id) { var commande = (from commandes in context.PPCommandes where commandes.NoCommande == id select commandes).SingleOrDefault(); var user = SessionUtilisateur.UtilisateurCourant; if (user is PPVendeur) { PPVendeur vendeur = (PPVendeur)user; if (commande.PPVendeur.NoVendeur != vendeur.NoVendeur) { throw new HttpResponseException(System.Net.HttpStatusCode.Unauthorized); } } else if (user is PPClient) { PPClient client = (PPClient)user; if (commande.PPClient.NoClient != client.NoClient) { throw new HttpResponseException(System.Net.HttpStatusCode.Unauthorized); } } if (!Directory.Exists(Server.MapPath("/Recus"))) { Directory.CreateDirectory(Server.MapPath("/Recus")); } string path = Server.MapPath("/Recus/" + commande.NoCommande + ".pdf"); if (System.IO.File.Exists(path)) { return(new HttpStatusCodeResult(HttpStatusCode.OK)); } string view = PartialView("Vendeur/_RecuImpression", commande).RenderToString(); PdfConverter pdfC = new PdfConverter(); pdfC.SavePdfFromHtmlStringToFile(view, path); /*HtmlToPdf Renderer = new HtmlToPdf(); * var PDF = Renderer.RenderHtmlAsPdf(view); * PDF.TrySaveAs(path);*/ return(new HttpStatusCodeResult(HttpStatusCode.OK)); }
public void Genratepdftext(string text, string fname) { try { string temp_path = ""; PdfConverter pdfConverter_Transcrpit = new PdfConverter(); string temp1 = ""; pdfConverter_Transcrpit.LicenseKey = "eVJIWUtLWUtZTFdJWUpIV0hLV0BAQEA="; pdfConverter_Transcrpit.SavePdfFromHtmlStringToFile(text,fname); } catch (Exception EX) { //return ""; throw EX; } }
internal void Maak_Lijst(DateTime pStartDatum, DateTime pEindDatum, List <PoortViewMandagen> selxMANDAGEN, List <allArbeidsRelaty> _AllArbeidsrelaties, List <PoortViewRegistratiebevoegd> _AllProjectleiders, List <PoortViewProject> _AllProjecten, List <PoortViewBedrijf> _AllBedrijven, List <PoortViewVakman> _AllVakmannen, EvoTools.HeaderFooter LijstGegevens) { // Start met allereerste pagina htmlBody = string.Empty; records = string.Empty; // // Deel periode in x-aantal weken in // // Week van Startdatum begin op maandag List <DateTime> WeekStart = new List <DateTime>(); List <DateTime> WeekEinde = new List <DateTime>(); // Trek DayofWeek van startdatum af om de maandag van die week te bepalen // Let op: Pak de HELE periode, niet slechts de keuze in de UI (Met showall wordt de periode automatisch uitgebreid!) DateTime pAllMinDatum = selxMANDAGEN.Select(x => x.Begintijd).Min(); DateTime pAllMaxDatum = selxMANDAGEN.Select(x => x.Begintijd).Max(); // Bepaal de maandag van de startweek DateTime Maandag = pAllMinDatum; while (Maandag.DayOfWeek != DayOfWeek.Monday) { Maandag = Maandag.AddDays(-1); } //DateTime PeriodeStart = Maandag; do { WeekStart.Add(Maandag); Maandag = Maandag.AddDays(7); WeekEinde.Add(Maandag); } while (Maandag <= pAllMaxDatum);// pEindDatum); //DateTime PeriodeEinde = Maandag; // Weekstart en einde kunnen nooit vóór of na totaalplaatje liggen! // Let daar op, want misschien is niet een gehele week geselecteerd, dan kan dit voorkomen. Pas periode's dan aan! //if (WeekStart[0] < pStartDatum) // WeekStart[0] = pStartDatum; //if (WeekEinde[WeekEinde.Count - 1] > pEindDatum) // WeekEinde[WeekEinde.Count - 1] = pEindDatum.AddDays(1); // Eerst even Totaal alle vakmannen double UrenT = 0; double UrenV = 0; int Vakmannen = 0; int VakmannenT = 0; string[] RegelVars = new string[] { "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }; // Bereken voor elke dienstbetrekking het totaal (per dag!!!) htmlBody = htmlcontainer; DayOfWeek DagvdWeek = new DayOfWeek(); DateTime EenWillekeurigeMaandag = new DateTime(2013, 10, 21).Date; for (int Weekdag = 0; Weekdag <= 6; Weekdag++) { //int DagvdWeek = Weekdag == 0 ? 7 : Weekdag; // Dagvdweek begint nu van 7 (maandag), dan DagvdWeek = EenWillekeurigeMaandag.AddDays(Weekdag).DayOfWeek; // Zo starten we dus bij Maandag en gaan door tot Zondag allArbeidsRelaty Allen = new allArbeidsRelaty(); Allen.ArbeidsRelatieID = 0; Allen.ArbeidsRelatieNaam = "Select ALL"; Allen.SorteerVolgorde = -1; _AllArbeidsrelaties.Add(Allen); //for (int c = -1; c <= 7; c = c + 2) foreach (var Arbeidsrelatie in _AllArbeidsrelaties) { // Uren UrenV = selxMANDAGEN.Where(x => (x.ArbeidsrelatieVW == Arbeidsrelatie.ArbeidsRelatieID || Arbeidsrelatie.ArbeidsRelatieID == -1) && x.Begintijd.DayOfWeek == DagvdWeek ).Sum(x => x.Uren) * 60; UrenV += selxMANDAGEN.Where(x => (x.ArbeidsrelatieVW == Arbeidsrelatie.ArbeidsRelatieID || Arbeidsrelatie.ArbeidsRelatieID == -1) && x.Begintijd.DayOfWeek == DagvdWeek ).Sum(x => x.Minuten); UrenV /= 60.0; // Plaats ureen in HTML voorblad htmlBody = htmlBody.Replace("{" + Weekdag.ToString() + "u" + Arbeidsrelatie.ArbeidsRelatieID.ToString() + "}" , (UrenV == 0) ? "" : UrenV.ToString()); // Dagen Vakmannen = selxMANDAGEN.Where(x => (x.ArbeidsrelatieVW == Arbeidsrelatie.ArbeidsRelatieID || Arbeidsrelatie.ArbeidsRelatieID == -1) && x.Begintijd.DayOfWeek == DagvdWeek ) // Pak liever versch. vakmannen per dag ipv versch aantal vakmnnen //.Select(x => x.Mandag.VakmanId).Distinct().Count(); .Select(x => new { x.VakmanId, x.Begintijd.Date }).Distinct().Count(); //if (Arbeidsrelatie.ArbeidsRelatieID == -1) // RegelVars[Arbeidsrelatie.ArbeidsRelatieID + 2] = (Vakmannen == 0) ? "nvt" : Vakmannen.ToString(); //else // Plaats vakmandagen in HTML voorblad htmlBody = htmlBody.Replace("{" + Weekdag.ToString() + "d" + Arbeidsrelatie.ArbeidsRelatieID.ToString() + "}" , (UrenV == 0) ? "" : Vakmannen.ToString()); // 'Halve vakmannen (vakmannen die op dezelfde dag op meerdere projecten zaten // ??? hoeft hier volegsn mij geen rekening mee gehouden te worden; in het totaalplaatje zit dat al 'verrekend' } } // Zeker weten dat alle mogelijke {xxx} variabelen verwijderd zijn uit voorblad: for (int d = 0; d <= 6; d++) { for (int i = 0; i <= 4; i++) { htmlBody = htmlBody.Replace("{" + d.ToString() + "d" + i.ToString() + "}", ""); htmlBody = htmlBody.Replace("{" + d.ToString() + "u" + i.ToString() + "}", ""); } } // Periode htmlBody = htmlBody.Replace("[%periode%]", string.Format("{0:dd-MM-yyyy} t/m {1:dd-MM-yyyy}", pStartDatum, pEindDatum)); // Periode /* * Okay we hebben het totaal van alles, fijn. * nu dan per week: * (Week-tabblad maken op nieuw pagina met totalen) * per Project * (Project-tabblad maken op nieuwe pagina) * Per Vakman * Per dag van de week * Gewerkte uren van deze valkman * (Regel met alle uren van de week toevoegen aan tabel) * */ // Bepaal voor elke week de totalen string Tabellen = string.Empty; for (int i = 0; i < WeekStart.Count(); i++) { DateTime _StartTijd = WeekStart[i]; DateTime _EindeTijd = WeekEinde[i]; UrenV = 0; UrenT = 0; Array.Clear(RegelVars, 0, 15); var ProjectIDsDezeWeek = selxMANDAGEN.Where(x => x.Begintijd >= _StartTijd && x.Begintijd < _EindeTijd) .OrderBy(x => x.project_NR) .Select(x => x.project_NR) .Distinct().ToList(); // Per project foreach (var DitProject in _AllProjecten.Where(y => ProjectIDsDezeWeek.Contains(y.ProjectNR))) { // Start tabel records = string.Empty; var UitvoerdersIDsOpDitPorject = selxMANDAGEN.Where(x => x.project_NR == DitProject.ProjectNR) .Select(x => x.ProjectleiderId).Distinct().ToList(); var UitvoerdersOpDitPorject = selxMANDAGEN.Where(x => x.ProjectId == DitProject.ProjectNR) .Select(x => x.ProjectleiderId).Distinct().ToList(); string Uitvoerders = string.Empty; foreach (var uitv in _AllProjectleiders.Where(x => UitvoerdersIDsOpDitPorject.Contains(x.ProjectleiderId ?? -1))) { Uitvoerders += (Uitvoerders == string.Empty ? "" : " / "); Uitvoerders += uitv.Gebruikersnaam; } string NieuwProjectTabel = ET.ReplStr(htmltabel, new string[] { DitProject.ProjectNR.ToString(), (from og in _AllBedrijven where og.bedrijf_nr == DitProject.BedrijfVW select og.naam).FirstOrDefault() ?? "<Onbekend>", DitProject.Naam, DitProject.plaats, DitProject.bouw_straat, Uitvoerders, CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(_StartTijd, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday).ToString(), _StartTijd.ToShortDateString() + " t/m " + _EindeTijd.AddDays(-1).ToShortDateString() }, 8); //Per Vakman //foreach (var DezeVakman in selxMANDAGEN.Where(x => // x.Begintijd >= _StartTijd && // x.Begintijd < _EindeTijd && // x.ProjectId == DitProject.ProjectId) // .OrderBy(x => x.ArbeidsrelatieVW) //.ThenBy(x => x.VolledigeNaam) // .Select(x => new { x.VakmanId, x.ArbeidsrelatieVW}).Distinct().ToList()) foreach (var DezeVakman in selxMANDAGEN.Where(x => x.Begintijd >= _StartTijd && x.Begintijd < _EindeTijd && x.ProjectId == DitProject.ProjectId) .Select(x => new { x.VakmanId, x.ArbeidsrelatieVW, _Vakman = _AllVakmannen.Where(y => y.VakmanId == x.VakmanId).FirstOrDefault() }).Distinct().ToList() .OrderBy(x => x.ArbeidsrelatieVW).ThenBy(x => x._Vakman.Naam)) //.ThenBy(x => x.VolledigeNaam) { Array.Clear(RegelVars, 0, 17); string Arbeidsrelatie = _AllArbeidsrelaties.Where(x => x.ArbeidsRelatieID == DezeVakman.ArbeidsrelatieVW).Select(x => x.ArbeidsRelatieNaam).FirstOrDefault(); //PoortViewVakman _Vakman = _AllVakmannen.Where(x => x.VakmanId == DezeVakman.VakmanId).FirstOrDefault(); RegelVars[0] = Arbeidsrelatie + // Moet zijn: Werkelijke waarde (Arbeidsrelatie.ToLower() == "intern" ? " " + DezeVakman.VakmanId.ToString() : ""); RegelVars[1] = DezeVakman._Vakman.Bsn;// _Vakman.Bsn; RegelVars[2] = DezeVakman._Vakman.Naam; // Regelvar[3] geeft uren van Maandag... ect tm regelvar[9] (zondag) // Bepaal startpositie afhankelijk van de dag (if maandag, then startpositie = 3) int regelDagvdWeekPositie = 2 + ( ((int)_StartTijd.DayOfWeek == 0) ? 7 : (int)_StartTijd.DayOfWeek // .Dayofweek loopt van 0 (zonadg) tot Zaterdag (6) ); // MSZ: 2014-1-22 Hey dit is fout, het moet < zijn en niet <= //for (DateTime dag = _StartTijd.Date; dag <= _EindeTijd; dag = dag.AddDays(1)) for (DateTime dag = _StartTijd.Date; dag < _EindeTijd; dag = dag.AddDays(1)) { string project = DitProject.Naam; UrenV = selxMANDAGEN.Where(x => x.Begintijd >= dag && x.Begintijd < dag.AddDays(1) && x.Begintijd.Date == dag && x.ProjectId == DitProject.ProjectId && x.VakmanId == DezeVakman.VakmanId) .Select(x => x.Uren * 60 + x.Minuten).Sum() / 60.0; //UrenV += selxMANDAGEN.Where(x => // x.Mandag.Begintijd >= dag && // x.Mandag.Begintijd < dag.AddDays(1) && // x.Mandag.Begintijd.Date == dag && // x.Mandag.ProjectId == DitProject.Project.MandagenReg.ProjectId && // x.Mandag.VakmanId == DezeVakman.Vakman.MandagenReg.VakmanId) // .Select(x => x.Mandag.Minuten).Sum(); //UrenV /= 60.0; RegelVars[regelDagvdWeekPositie++] = (UrenV == 0) ? "" : UrenV.ToString(); } // Next Dag van de Week // Voeg nieuwe tabel-regel toe records += ET.ReplStr(htmltabelrow, RegelVars, 17); } // Next Vakman NieuwProjectTabel = NieuwProjectTabel.Replace("[%Regels%]", records); Tabellen += NieuwProjectTabel; } // Next Project } // Next Week // Eddy Ready Go. // We hebben nu feitelijk alle regels gevuld, laten we de HTMl pagina opmaken! // NIEUWE METHODE: string HtmLtOTAAL = htmlBody.Replace("[%Overzicht%]", Tabellen); ET.MakePdf(HtmLtOTAAL, LijstGegevens, true); return; // // Open Evo gebeuren // PdfConverter pdfConverter = new PdfConverter(); pdfConverter.LicenseKey = "B4mYiJubiJiInIaYiJuZhpmahpGRkZE="; pdfConverter.LicenseKey = "EpyMnY6OnYyPjJ2Jk42djoyTjI+ThISEhA=="; // Linker en rechter-marge instellen want het document was net te breed pdfConverter.PdfDocumentOptions.PdfPageOrientation = PdfPageOrientation.Landscape; pdfConverter.PdfDocumentOptions.LeftMargin = 10; pdfConverter.PdfDocumentOptions.RightMargin = 10; pdfConverter.PdfDocumentOptions.TopMargin = 10; pdfConverter.PdfDocumentOptions.BottomMargin = 10; pdfConverter.PdfDocumentOptions.FitWidth = true; // Default pdfConverter.PdfDocumentOptions.AutoSizePdfPage = true; //Default ET.AddHeaderElements(pdfConverter); // HTML Totaalplaatje genereren //string fullHtml = htmlcontainer.Replace("[%Overzicht%]", htmlBody); string fullHtml = htmlBody.Replace("[%Overzicht%]", Tabellen); // HTML: PDF creeren string outFilePath = System.IO.Path.Combine(xHtmlFolder, "ConvertHtmlString-" + "-" + DateTime.Now.Month + "-" + DateTime.Now.Day + "-" + DateTime.Now.Hour + "-" + DateTime.Now.Minute + "-" + DateTime.Now.Second + "-" + DateTime.Now.Millisecond + ".pdf"); pdfConverter.SavePdfFromHtmlStringToFile(fullHtml, outFilePath); System.Diagnostics.Process.Start(outFilePath); }
protected void GeneraReporte() { #region Cuerpo string Cuerpo = (" <!DOCTYPE html> " + " <html xmlns='http://www.w3.org/1999/xhtml'>" + " <head> " + " <meta http-equiv='Content-Type' content='text/html; charset=utf-8'/> " + " <link href='../Css/Datosminimos.css' rel='stylesheet' type='text/css' /> " + " <title></title> " + " </head> " + " <body> " + " <div > " + " <table style='text-align:left'> " + " <tr> " + " <td> " + " <img src='../images/logo.jpg' /> " + " </td> " + " <td> " + " <h3>Uniad Jurídica </h3> " + " <h3>Dirección de Consultas, convenios y Contratos</h3> " + " </td> " + " </tr> " + " </table> " + " <br /> " + " <table> " + " <tr> " + " <td><h4>NOMBRE O RAZÓN SOCIAL: </h4></td> " + " <td></td> " + " <td>@NOMBRE</td> " + " </tr> " + " <tr> " + " <td><h4>R.F.C: </h4></td>" + " <td></td>" + " <td>@RFC</td>" + " </tr>" + " <tr>" + " <td><h4>CURP: </h4></td>" + " <td></td>" + " <td>@CURP</td>" + " </tr>" + " <tr>" + " <td><h4>DOMICILIO LEGAL:</h4></td>" + " <td>CALLE: </td>" + " <td>@CALLE</td>" + " </tr>" + " <tr>" + " <td><h4></h4></td>" + " <td>NÚMERO: </td>" + " <td>@NUMERO</td>" + " </tr>" + " </table>" + " </div>" + " </body>" + " </html>"); #endregion string rutaArchivo = @"J:\ArchivosDescargados\Reportes\convertido3" + ".pdf"; PdfConverter pdfConverter = new PdfConverter(); pdfConverter.LicenseKey = "f1ROX0dfTk9OTl9KUU9fTE5RTk1RRkZGRg=="; pdfConverter.PdfDocumentOptions.PdfPageSize = PdfPageSize.Letter; pdfConverter.PdfDocumentOptions.PdfCompressionLevel = PdfCompressionLevel.Best; pdfConverter.PdfDocumentOptions.PdfPageOrientation = ExpertPdf.HtmlToPdf.PDFPageOrientation.Portrait; pdfConverter.PdfDocumentOptions.ShowHeader = this.ShowHeader; //pdfConverter.PdfDocumentOptions.ShowFooter = this.ShowFooter; pdfConverter.PdfDocumentOptions.TopMargin = 0; pdfConverter.PdfDocumentOptions.RightMargin = 0; pdfConverter.PdfDocumentOptions.BottomMargin = 0; pdfConverter.PdfDocumentOptions.LeftMargin = 0; pdfConverter.SavePdfFromHtmlStringToFile(Cuerpo, rutaArchivo); }
public void CreatePdfFiles(PdfConverter pdfConverter, string htmlString) { string pdfWorkFilePath = System.Configuration.ConfigurationManager.AppSettings["pdfWorkFilePath"]; MergeEx merger = new MergeEx(); string existingpdf = pdfWorkFilePath + this.OutputFileName.ToString() + ".pdf"; string[] Files = System.IO.Directory.GetFiles(pdfWorkFilePath); int count = 0; string filename = this.OutputFileName.ToString() + ".pdf"; string finalfilename = this.OutputFileName.ToString() + "MergedDocs.pdf"; pdfConverter.SavePdfFromHtmlStringToFile(htmlString, pdfWorkFilePath + filename); merger.DestinationFile = pdfWorkFilePath + this.PartID.ToString() + "Merged.pdf"; merger.SourceFolder = pdfWorkFilePath + filename; if (this.NumofCopies > 0) { //save html for CC Card string htmlCC = htmlString; htmlCC = htmlString.Replace("<SPAN id=FRONTPAGEBEGIN></SPAN>", "<H2>CONTINUATION TRAVEL CARD for " + this.PartID + "</H2>"); htmlCC = htmlCC.Replace("<SPAN id=ccMessage></SPAN>", "<SPAN id=ccMessage> CONTINUATION CARD</SPAN>"); htmlCC = htmlCC.Replace("<SPAN id=ccMessage2></SPAN>", "<SPAN id=ccMessage> CONTINUATION CARD</SPAN>"); string ccfilename = this.OutputFileName.ToString() + "Continuation.pdf"; PdfConverter ccPdf = new PdfConverter(this.Width, this.Height); ccPdf.PdfDocumentOptions.PdfPageSize = Winnovative.WnvHtmlConvert.PdfPageSize.Letter; //NOTE: Users did not want the front page of the travel card to printing out on continuation card. I was able to blank out the content on the first page could not figure out to eliminate //the first page. It is probably possible and may be a good thing to refactor in the future. ccPdf.HtmlExcludedRegionsOptions.HtmlElementIds = new string[] { "CONTENTONFRONT", "BREAKFIRSTPAGE", "FRONTCONTENT" }; if (System.Configuration.ConfigurationManager.AppSettings["htmltopdf.licensekey"] != String.Empty) { ccPdf.LicenseKey = System.Configuration.ConfigurationManager.AppSettings["htmltopdf.licensekey"]; } ccPdf.PdfDocumentOptions.PdfCompressionLevel = PdfCompressionLevel.NoCompression; ccPdf.PdfDocumentOptions.PdfPageOrientation = Winnovative.WnvHtmlConvert.PDFPageOrientation.Landscape; ccPdf.PdfDocumentOptions.ShowHeader = false; ccPdf.PdfDocumentOptions.ShowFooter = false; ccPdf.PdfDocumentOptions.InternalLinksEnabled = false; ccPdf.PdfDocumentOptions.JpegCompressionEnabled = false; ccPdf.PdfDocumentOptions.StretchToFit = true; ccPdf.OptimizeMemoryUsage = false; ccPdf.PdfDocumentOptions.LiveUrlsEnabled = true; ccPdf.PdfDocumentOptions.LeftMargin = 9; ccPdf.PdfDocumentOptions.RightMargin = 9; ccPdf.PdfDocumentOptions.TopMargin = 9; ccPdf.PdfDocumentOptions.BottomMargin = 9; ccPdf.SavePdfFromHtmlStringToFile(htmlCC, pdfWorkFilePath + ccfilename); merger.AddFile(pdfWorkFilePath + filename); int counter = 0; do { counter++; if (counter > 5) { //don't get stuck in a loop. //users agreed at 5 cards printed at a time would be enough 1/2012 break; } merger.AddFile(pdfWorkFilePath + ccfilename); } while (counter < this.NumofCopies + 1); } else { merger.AddFile(pdfWorkFilePath + filename); } if (this.DrawingFilePath != null || this.DrawingFilePath != String.Empty) { HandleDrawingFile(merger); } if (this.DeviationFile1Path != null || this.DeviationFile1Path != String.Empty) { HandleDeviation1File(merger); } if (this.DeviationFile2Path != null || this.DeviationFile2Path != String.Empty) { HandleDeviation2File(merger); } if (this.QualityAlert1File != null || this.QualityAlert1File != String.Empty) { HandleQualityAlert1File(merger); } if (this.QualityAlert2File != null || this.QualityAlert2File != String.Empty) { HandleQualityAlert2File(merger); } if (this.MachineSetUpFile != null || this.MachineSetUpFile != String.Empty) { HandleMachineSetUpFile(merger); } if (this.AdditionalFilePath != null || this.AdditionalFilePath != String.Empty) { HandleAdditionalFile(merger); } if (this.DieSetUpFilePath != null || this.DieSetUpFilePath != String.Empty) { HandleDieSetUpInstructions(merger); } count++; merger.Execute(); }
internal void Maak_Lijst(DateTime pStartDatum, DateTime pEindDatum, List <USMario.xMANDAG> selxMANDAGEN, List <USMario.JoinedProjectGegevens> _Projecten) { // Projectgegevens // // Deel periode in x-aantal weken in // // Week van Startdatum begin op maandag List <DateTime> WeekStart = new List <DateTime>(); List <DateTime> WeekEinde = new List <DateTime>(); // Trek DayofWeek van startdatum af om de maandag van die week te bepalen DateTime Maandag = pStartDatum.AddDays((1 - ((int)pStartDatum.DayOfWeek == 0 ? 7 : (int)pStartDatum.DayOfWeek))); DateTime PeriodeStart = Maandag; int StartWeekNr = new GregorianCalendar(GregorianCalendarTypes.Localized).GetWeekOfYear(PeriodeStart, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday); do { // Voorlopig nog even geen 'ShowAll', dus WeekStart niet eerder dan startdatum if (Maandag < pStartDatum) { WeekStart.Add(pStartDatum); } else { WeekStart.Add(Maandag); } Maandag = Maandag.AddDays(7); // Voorlopig nog even geen 'ShowAll', dus WeekEinde niet later dan einddatum if (Maandag > pEindDatum) { WeekEinde.Add(pEindDatum.AddDays(1)); } else { WeekEinde.Add(Maandag); } } while (Maandag <= pEindDatum); DateTime PeriodeEinde = Maandag; // NIEUW: lijst met vakmannen die op één dag gedeeld worden over verschillende projecten // mandagen per dag persoon per project var _MandagenPerDagPerPersoonPerProject = selxMANDAGEN .Select(x => new { Datum = x.Mandag.Begintijd.Date, VakmanID = x.Mandag.VakmanId, CodeDienstbetrekking = x.Dienstbetrekking, PLID = x.Mandag.ProjectId } ) .Distinct() .ToList(); // Idem, maar nu group by { vakman, count(aantal verschillende projecten)"} var _MandagenPerDag_PerVakman_AantalProjecten = _MandagenPerDagPerPersoonPerProject.Select(x => x) .GroupBy(x => new { x.Datum, x.VakmanID, x.CodeDienstbetrekking }) .Select(x => new { x.Key, Aantal = x.Count() }) .ToList(); // Pak alleen die mandagen die op één over meer dan 1 project lopen _MandagenPerDag_PerVakman_AantalProjecten = _MandagenPerDag_PerVakman_AantalProjecten.Where(x => x.Aantal > 1).ToList(); // En dan als laatst: alle losse mandaggegevens waarvan je de key hierboven bepaalt hebt. is het nog enigszinds duidelijk? var _MeerDan1ProjectenPerVakmanPerDag = (from x in _MandagenPerDagPerPersoonPerProject join y in _MandagenPerDag_PerVakman_AantalProjecten on new { x.Datum, x.VakmanID } equals new { y.Key.Datum, y.Key.VakmanID } select x).ToList(); // Eerst even Totaal alle vakmannen tesamen //List<char> Dienstbetrekkingscode = new List<int>("1,3,U,A".Split(',').Select(n => char.Parse(n)).ToList()); double DagenT, UrenT; double DagenD = 0; double UrenD = 0; string[] RegelVars = new string[] { "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }; // **************************************************************************************************** // // Start opbouwen van de totaalregels // Per 'DO' // Bereken het totaal van de betreffende periode; // Berken per project het totaal van de betreffende periode // // We beginnen met Totallperiode van periodestart tot periodeeind // vlak voor de 'WHILE' starten we met de 1e weekperiode te selecteren, daarna alle andere weekperiodes // // **************************************************************************************************** // Startsetting zodat we de gehele periode pakken DateTime SelectieStart = PeriodeStart; DateTime SelectieEinde = PeriodeEinde; string regelSamenvatting = "Totaal alle vakmannen"; // WeekIndex gebruiken we pas nadat de 1e lus is doorlopen int WeekIndex = 0; do // Start met totaal-periode; Neem daarna alle weekperiodes { UrenT = 0; DagenT = 0; // Bereken voor elke dienstbetrekking het totaal over deze periode for (int c = -1; c <= 7; c += 2) { // Uren UrenD = selxMANDAGEN.Where(x => x.Mandag.Begintijd >= SelectieStart && x.Mandag.Eindtijd < SelectieEinde && (x.Dienstbetrekking == c || c == -1) // bij c = -1, alles tellen, anders selecteren op Code c ).Sum(x => x.Mandag.Uren) * 60; UrenD += selxMANDAGEN.Where(x => x.Mandag.Begintijd >= SelectieStart && x.Mandag.Eindtijd < SelectieEinde && (x.Dienstbetrekking == c || c == -1) // bij c = -1, alles tellen, anders selecteren op Code c ).Sum(x => x.Mandag.Minuten); UrenD /= 60.0; // Dagen DagenD = selxMANDAGEN.Where(x => x.Mandag.Begintijd >= SelectieStart && x.Mandag.Eindtijd < SelectieEinde && (x.Dienstbetrekking == c || c == -1) // bij c = -1, alles tellen, anders selecteren op Code c ).Select(y => new { y.Vakman.MandagenReg.VakmanId, y.Mandag.Begintijd.Date }).Distinct().Count(); if (c == -1) // Totaal van alle codes { RegelVars[9] = (UrenD == 0) ? " " : Math.Ceiling(UrenD).ToString(); //ET.DecimaalUitijnen(UrenD, 1); RegelVars[10] = (DagenD == 0) ? " " : Math.Ceiling(DagenD).ToString(); //ET.DecimaalUitijnen(DagenD, 1); RegelVars[0] = regelSamenvatting; } else // Totaal per dienstpetrekking (1 = Intern, 3 = ZZP, 5 = uitzendkracht, 7 = Extern) { RegelVars[c] = (UrenD == 0) ? " " : Math.Ceiling(UrenD).ToString(); //ET.DecimaalUitijnen(UrenD, 1); RegelVars[c + 1] = (DagenD == 0) ? " " : Math.Ceiling(DagenD).ToString(); //ET.DecimaalUitijnen(DagenD, 1); } } records += "<b>" + ET.HtmlFormat(htmlrecord, RegelVars) + "</b>"; // Bereken nu PER PROJECT voor elke dienstbetrekking het totaal over deze periode foreach (int ProjectID in selxMANDAGEN .OrderBy(x => x.Mandag.ProjectId) .Select(x => x.Mandag.ProjectId).Distinct().ToList()) { UrenT = 0; DagenT = 0; for (int c = 1; c <= 7; c += 2) { // Uren UrenD = selxMANDAGEN.Where(x => x.Mandag.Begintijd >= SelectieStart && x.Mandag.Eindtijd < SelectieEinde && x.Mandag.ProjectId == ProjectID && x.Dienstbetrekking == c ).Sum(x => x.Mandag.Uren) * 60; UrenD += selxMANDAGEN.Where(x => x.Mandag.Begintijd >= SelectieStart && x.Mandag.Eindtijd < SelectieEinde && x.Mandag.ProjectId == ProjectID && x.Dienstbetrekking == c ).Sum(x => x.Mandag.Minuten); UrenD /= 60.0; DagenD = selxMANDAGEN.Where(x => x.Mandag.Begintijd >= SelectieStart && x.Mandag.Eindtijd < SelectieEinde && x.Mandag.ProjectId == ProjectID && (x.Dienstbetrekking == c || c == -1) // bij c = -1, alles tellen, anders selecteren op Code c ).Select(y => new { y.Vakman.MandagenReg.VakmanId, y.Mandag.Begintijd.Date }).Distinct().Count(); if (c != -1) // Totaal van alle codes // Totaal per dienstpetrekking (1 = Intern, 3 = ZZP, 5 = uitzendkracht, 7 = Extern) { // Check of er dagen zijn die ook bij een andere vakman geteld zijn foreach (var d in _MeerDan1ProjectenPerVakmanPerDag .Where(x => x.Datum >= SelectieStart && x.Datum < SelectieEinde && x.CodeDienstbetrekking == c && x.PLID == ProjectID) ) { var meerdere_dagen = _MeerDan1ProjectenPerVakmanPerDag .Where(y => d.Datum == y.Datum && d.VakmanID == y.VakmanID ).Count(); DagenD -= 1; DagenD += 1.0 / meerdere_dagen; } // Totaal van dienstbetrekking invullen RegelVars[c] = (UrenD == 0) ? " " : Math.Ceiling(UrenD).ToString(); //ET.DecimaalUitijnen(UrenD, 1); RegelVars[c + 1] = (DagenD == 0) ? " " : Math.Ceiling(DagenD).ToString(); //ET.DecimaalUitijnen(DagenD, 1); UrenT += UrenD; DagenT += DagenD; } } // RegelBegin en RegelTotalen toevoegen RegelVars[0] = "<div style=\"float: left;width : 5%;margin :1px\"></div>" + //_gebruikers.Where(x => x.ProjectleiderId == ProjectID).Select(x => x.Gebruikersnaam).First(); _Projecten.Where(x => x.MandagenReg.ProjectId == ProjectID).Select(x => x.Zeebregts.naam_project).First(); RegelVars[9] = (UrenT == 0) ? " " : Math.Ceiling(UrenT).ToString(); //ET.DecimaalUitijnen(UrenT, 1); RegelVars[10] = (DagenT == 0) ? " " : Math.Ceiling(DagenT).ToString(); //ET.DecimaalUitijnen(DagenT, 1); // Alle waarden zijn gevuld; Voeg regel toe aan HTML pagina // NIEUW als er geen uren staan voor deze vakman, dan ook geen regel aan besteden dus alleen tonen als er uren gemaakt zijn if (UrenT > 0) { records += ET.HtmlFormat(htmlrecord, RegelVars); } } // bij de 1e lus was de periode ingesteld op totaalperiode, vanaf nu pakken we de weekperiodes if (WeekIndex < WeekStart.Count()) { SelectieStart = WeekStart[WeekIndex]; SelectieEinde = WeekEinde[WeekIndex]; regelSamenvatting = "Week: " + new GregorianCalendar(GregorianCalendarTypes.Localized).GetWeekOfYear(WeekStart[WeekIndex], CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday); } } while (++WeekIndex <= WeekStart.Count()); // Eco PDF eenmaken, vullen en tonen PdfConverter pdfConverter = new PdfConverter(); pdfConverter.LicenseKey = "B4mYiJubiJiInIaYiJuZhpmahpGRkZE="; pdfConverter.LicenseKey = "EpyMnY6OnYyPjJ2Jk42djoyTjI+ThISEhA=="; ET.AddHeaderElements(pdfConverter); string newPage = htmlpage; //newPage = newPage.Replace("[%vantot%]", PeriodeStart.ToShortDateString() + " / " + PeriodeEinde.ToShortDateString()); newPage = newPage.Replace("[%vantot%]", WeekStart[0].ToShortDateString() + " / " + WeekEinde[WeekEinde.Count - 1].ToShortDateString()); newPage = newPage.Replace("[%periode%]", "Week " + new GregorianCalendar(GregorianCalendarTypes.Localized).GetWeekOfYear(PeriodeStart, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday) + " tot en met week " + new GregorianCalendar(GregorianCalendarTypes.Localized).GetWeekOfYear(PeriodeEinde.AddDays(-1), CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday) ); // HTML regels toevoegen aan pagina newPage = newPage.Replace("[%OverzichtItems%]", records); htmlBody += newPage; // HTML Totaalplaatje genereren string fullHtml = container.Replace("[%Overzicht%]", htmlBody); // HTML: PDF creeren string outFilePath = System.IO.Path.Combine(Environment.CurrentDirectory, "ConvertHtmlString-" + "-" + DateTime.Now.Month + "-" + DateTime.Now.Day + "-" + DateTime.Now.Hour + "-" + DateTime.Now.Minute + "-" + DateTime.Now.Second + "-" + DateTime.Now.Millisecond + ".pdf"); pdfConverter.SavePdfFromHtmlStringToFile(fullHtml, outFilePath); System.Diagnostics.Process.Start(outFilePath); }