Esempio n. 1
0
        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;
            }
        }
Esempio n. 2
0
        /// <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);
        }
Esempio n. 3
0
        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));
        }
Esempio n. 4
0
        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;
            }
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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>&nbsp;&nbsp;&nbsp;CONTINUATION CARD</SPAN>");
                htmlCC = htmlCC.Replace("<SPAN id=ccMessage2></SPAN>", "<SPAN id=ccMessage>&nbsp;&nbsp;&nbsp;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();
        }
Esempio n. 8
0
        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) ? "&nbsp" : Math.Ceiling(UrenD).ToString();   //ET.DecimaalUitijnen(UrenD, 1);
                        RegelVars[10] = (DagenD == 0) ? "&nbsp" : 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) ? "&nbsp" : Math.Ceiling(UrenD).ToString(); //ET.DecimaalUitijnen(UrenD, 1);
                        RegelVars[c + 1] = (DagenD == 0) ? "&nbsp" : 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) ? "&nbsp" : Math.Ceiling(UrenD).ToString();   //ET.DecimaalUitijnen(UrenD, 1);
                            RegelVars[c + 1] = (DagenD == 0) ? "&nbsp" : 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) ? "&nbsp" : Math.Ceiling(UrenT).ToString();   //ET.DecimaalUitijnen(UrenT, 1);
                    RegelVars[10] = (DagenT == 0) ? "&nbsp" : 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);
        }