Ejemplo n.º 1
0
        /// <summary>
        /// Generate PDF from Html using TuesPechkin wkhtmltopdf Library, returns byteArray.
        /// </summary>
        /// <param name="html">Html string.</param>
        /// <returns>Byte array.</returns>
        public static byte[] GetPdfStreamFromHtmlUsingTuesPechkin(string html, bool isLandscape = false)
        {
            var footer = new FooterSettings()
            {
                FontSize  = 8,
                FontName  = "Arial",
                RightText = "\nPage [page] of [topage]"
            };

            var document = new HtmlToPdfDocument
            {
                GlobalSettings =
                {
                    ProduceOutline = true,
                    PaperSize      = PaperKind.A4, // Implicit conversion to PechkinPaperSize
                    Margins        =
                    {
                        All  = 1.375,
                        Unit = Unit.Centimeters
                    },
                    Orientation    = isLandscape ? GlobalSettings.PaperOrientation.Landscape : GlobalSettings.PaperOrientation.Portrait
                },
                Objects =
                {
                    new ObjectSettings {
                        HtmlText = html, FooterSettings = footer
                    }
                }
            };

            return(converter.Convert(document));
        }
Ejemplo n.º 2
0
 public GetFooterSettingsViewModel(FooterSettings footerSettings)
 {
     WeekWorkingHours    = footerSettings.WeekWorkingHours;
     WeekendWorkingHours = footerSettings.WeekendWorkingHours;
     PhoneNumber         = footerSettings.PhoneNumber;
     Email = footerSettings.Email;
     Text  = footerSettings.Text;
 }
Ejemplo n.º 3
0
        /// ----------------------------------------------------------------------------- 
        /// <summary> 
        /// Page_Load runs when the control is loaded 
        /// </summary> 
        /// ----------------------------------------------------------------------------- 
        protected void Page_Load(object sender, System.EventArgs e)
        {
            try
            {
                //SessionServiceFactory.InitializeModule(Request.ApplicationPath, Request.RawUrl);
                DotNetNuke.Framework.jQuery.RequestRegistration();

                FooterSettings settingsData = new FooterSettings(this.TabModuleId);

                if (!string.IsNullOrEmpty(settingsData.ShowCopyright))
                {
                    this.hdnFooterCopyright.Value = settingsData.ShowCopyright;
                }
                if (!string.IsNullOrEmpty(settingsData.CopyrightText))
                {
                    this.hdnFooterCopyrightText.Value = settingsData.CopyrightText;
                }
                if (!string.IsNullOrEmpty(settingsData.ShowPrivacy))
                {
                    this.hdnFooterPrivacy.Value = settingsData.ShowPrivacy;
                }
                if (!string.IsNullOrEmpty(settingsData.SecLinkToPrivacy))
                {
                    this.hdnFooterPrivacyLink.Value = settingsData.SecLinkToPrivacy;
                }
                if (!string.IsNullOrEmpty(settingsData.ShowContactUs))
                {
                    this.hdnFooterContactUs.Value = settingsData.ShowContactUs;
                }
                if (!string.IsNullOrEmpty(settingsData.SecLinkToContactUs))
                {
                    this.hdnFooterContactUsLink.Value = settingsData.SecLinkToContactUs;
                }
                if (!string.IsNullOrEmpty(settingsData.ShowLogo))
                {
                    this.hdnFooterLogo.Value = settingsData.ShowLogo;
                }

                if (!string.IsNullOrEmpty(settingsData.LinkToFacebook))
                {
                    this.hdnFacebook.Value = settingsData.LinkToFacebook;
                }

                if (!string.IsNullOrEmpty(settingsData.LinkToYoutube))
                {
                    this.hdnYoutube.Value = settingsData.LinkToYoutube;
                }

                this.hdnSkinPath.Value = PortalSettings.ActiveTab.SkinPath;
            }

            catch (Exception exc)
            {
                //Module failed to load 
                Exceptions.ProcessModuleLoadException(this, exc);
            }
        }
        public async Task UpdateAsync(FooterSettings footerSettings, UpdateFooterSettingsViewModel updateFooterSettingsViewModel)
        {
            footerSettings.WeekWorkingHours    = updateFooterSettingsViewModel.WeekWorkingHours;
            footerSettings.WeekendWorkingHours = updateFooterSettingsViewModel.WeekendWorkingHours;
            footerSettings.Email       = updateFooterSettingsViewModel.Email;
            footerSettings.PhoneNumber = updateFooterSettingsViewModel.PhoneNumber;
            footerSettings.Text        = updateFooterSettingsViewModel.Text;

            await context.SaveChangesAsync();
        }
Ejemplo n.º 5
0
        public FooterSettingsInstance(ObjectInstance prototype, FooterSettings footerSettings)
            : this(prototype)
        {
            if (footerSettings == null)
            {
                throw new ArgumentNullException("footerSettings");
            }

            m_footerSettings = footerSettings;
        }
Ejemplo n.º 6
0
        public Task <byte[]> GeneratePdfAsync(string html)
        {
            var globalSettings = new GlobalSettings
            {
                ColorMode   = ColorMode.Color,
                Orientation = Orientation.Portrait,
                PaperSize   = PaperKind.A4,
                Margins     = new MarginSettings
                {
                    Top    = 25,
                    Bottom = 25
                }
            };

            var webSettings = new WebSettings
            {
                DefaultEncoding = "utf-8"
            };

            var headerSettings = new HeaderSettings
            {
                FontSize = 15,
                FontName = "Arial",
                Right    = "Page [page] of [toPage]",
                Line     = true
            };

            var footerSettings = new FooterSettings
            {
                FontSize = 12,
                FontName = "Ariel",
                Center   = "This is for demonstration purposes only.",
                Line     = true
            };

            var objectSettings = new ObjectSettings
            {
                PagesCount     = true,
                HtmlContent    = html,
                HeaderSettings = headerSettings,
                FooterSettings = footerSettings,
                WebSettings    = webSettings
            };

            var htmlToPdfDocument = new HtmlToPdfDocument()
            {
                GlobalSettings = globalSettings,
                Objects        =
                {
                    objectSettings
                },
            };

            return(Task.Run(() => _converter.Convert(htmlToPdfDocument)));
        }
Ejemplo n.º 7
0
        /// ----------------------------------------------------------------------------- 
        /// <summary> 
        /// LoadSettings loads the settings from the Database and displays them 
        /// </summary> 
        /// <remarks> 
        /// </remarks> 
        /// <history> 
        /// </history> 
        /// ----------------------------------------------------------------------------- 
        public override void LoadSettings()
        {
            try
            {
                if (!IsPostBack)
                {
                    FooterSettings settingsData = new FooterSettings(this.TabModuleId);

                    if (!string.IsNullOrEmpty(settingsData.ShowCopyright))
                    {
                        this.chkCopyRight.Checked = Convert.ToBoolean(settingsData.ShowCopyright);
                    }
                    if (!string.IsNullOrEmpty(settingsData.CopyrightText))
                    {
                        this.txtCopyRightText.Text = settingsData.CopyrightText;
                    }
                    if (!string.IsNullOrEmpty(settingsData.ShowPrivacy))
                    {
                        this.chkPrivacy.Checked = Convert.ToBoolean(settingsData.ShowPrivacy);
                    }
                    if (!string.IsNullOrEmpty(settingsData.SecLinkToPrivacy))
                    {
                        this.txtPrivacyLink.Text = settingsData.SecLinkToPrivacy;
                    }
                    if (!string.IsNullOrEmpty(settingsData.ShowContactUs))
                    {
                        this.chkContactUs.Checked = Convert.ToBoolean(settingsData.ShowContactUs);
                    }
                    if (!string.IsNullOrEmpty(settingsData.SecLinkToContactUs))
                    {
                        this.txtContactUsLink.Text = settingsData.SecLinkToContactUs;
                    }
                    if (!string.IsNullOrEmpty(settingsData.ShowLogo))
                    {
                        this.chkLogo.Checked = Convert.ToBoolean(settingsData.ShowLogo);
                    }
                    if (!string.IsNullOrEmpty(settingsData.LinkToFacebook))
                    {
                        this.txtFacebookLink.Text = settingsData.LinkToFacebook;
                    }
                    if (!string.IsNullOrEmpty(settingsData.LinkToYoutube))
                    {
                        this.txtYoutubeLink.Text = settingsData.LinkToYoutube;
                    }

                }
            }
            catch (Exception exc)
            {
                //Module failed to load 
                Exceptions.ProcessModuleLoadException(this, exc);
            }
        }
Ejemplo n.º 8
0
        public override MailSettings Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            if (JsonDocument.TryParseValue(ref reader, out var doc))
            {
                FooterSettings footer = null;
                if (doc.RootElement.TryGetProperty("footer", out var footerProperty))
                {
                    footer = footerProperty.ToObject <FooterSettings>(options);
                }

                return(new MailSettings()
                {
                    BypassBounceManagement = GetEnabledPropertyValue(doc.RootElement, "bypass_bounce_management", false),
                    BypassListManagement = GetEnabledPropertyValue(doc.RootElement, "bypass_list_management", false),
                    BypassSpamManagement = GetEnabledPropertyValue(doc.RootElement, "bypass_spam_management", false),
                    BypassUnsubscribeManagement = GetEnabledPropertyValue(doc.RootElement, "bypass_unsubscribe_management", false),
                    Footer = footer,
                    SandboxModeEnabled = GetEnabledPropertyValue(doc.RootElement, "sandbox_mode", false)
                });
            }

            return(null);
        }
        private void ConvertHTMLToPDF(string html)
        {
            Log("Converting HTML to PDF");
            Log("Ignore errors like 'Qt: Could not initialize OLE (error 80010106)'", LogLevel.Warning);
            var converter = new BasicConverter(new PdfTools());

            var output = _options.Output;

            if (output == null)
            {
                output = Path.Combine(Directory.GetCurrentDirectory(), "export.pdf");
            }

            //somehow the options HeaderSettings.Left/Right/Center don't work in combination with HeaderSettings.HtmlURL
            var headerSettings = new HeaderSettings {
                FontSize = 9,
                Line     = !_options.HideHeaderLine,
                Spacing  = 2.812,
            };

            if (string.IsNullOrEmpty(_options.HeaderUrl))
            {
                headerSettings.Left   = _options.HeaderLeft;
                headerSettings.Center = _options.HeaderCenter;
                headerSettings.Right  = _options.HeaderRight;
            }
            else
            {
                headerSettings.HtmUrl = _options.HeaderUrl;
            }

            var footerSettings = new FooterSettings
            {
                Line = !_options.HideFooterLine
            };

            if (string.IsNullOrEmpty(_options.FooterUrl))
            {
                footerSettings.Left   = _options.FooterLeft;
                footerSettings.Center = _options.FooterCenter;
                footerSettings.Right  = _options.FooterRight;
            }
            else
            {
                footerSettings.HtmUrl = _options.FooterUrl;
            }

            var doc = new HtmlToPdfDocument()
            {
                GlobalSettings =
                {
                    ColorMode   = ColorMode.Color,
                    Orientation = Orientation.Portrait,
                    PaperSize   = PaperKind.A4,
                    Out         = output,
                },
                Objects =
                {
                    new ObjectSettings()
                    {
                        PagesCount     = true,
                        HtmlContent    = html,
                        WebSettings    = { DefaultEncoding = "utf-8" },
                        HeaderSettings = headerSettings,
                        FooterSettings = footerSettings,
                        UseLocalLinks  = true
                    }
                }
            };

            converter.Convert(doc);
            Log($"PDF created at: {output}");
        }
Ejemplo n.º 10
0
        private static void KitchenSink()
        {
            String  apiKey = Environment.GetEnvironmentVariable("SENDGRID_APIKEY", EnvironmentVariableTarget.User);
            dynamic sg     = new SendGrid.SendGridAPIClient(apiKey, "https://api.sendgrid.com");

            Mail mail = new Mail();

            Email email = new Email();

            email.Name    = "Example User";
            email.Address = "*****@*****.**";
            mail.From     = email;

            mail.Subject = "Hello World from the SendGrid CSharp Library";

            Personalization personalization = new Personalization();

            email         = new Email();
            email.Name    = "Example User";
            email.Address = "*****@*****.**";
            personalization.AddTo(email);
            email         = new Email();
            email.Name    = "Example User";
            email.Address = "*****@*****.**";
            personalization.AddCc(email);
            email         = new Email();
            email.Name    = "Example User";
            email.Address = "*****@*****.**";
            personalization.AddCc(email);
            email         = new Email();
            email.Name    = "Example User";
            email.Address = "*****@*****.**";
            personalization.AddBcc(email);
            email         = new Email();
            email.Name    = "Example User";
            email.Address = "*****@*****.**";
            personalization.AddBcc(email);
            personalization.Subject = "Thank you for signing up, %name%";
            personalization.AddHeader("X-Test", "True");
            personalization.AddHeader("X-Mock", "True");
            personalization.AddSubstitution("%name%", "Example User");
            personalization.AddSubstitution("%city%", "Denver");
            personalization.AddCustomArgs("marketing", "false");
            personalization.AddCustomArgs("transactional", "true");
            personalization.SendAt = 1461775051;
            mail.AddPersonalization(personalization);

            personalization = new Personalization();
            email           = new Email();
            email.Name      = "Example User";
            email.Address   = "*****@*****.**";
            personalization.AddTo(email);
            email         = new Email();
            email.Name    = "Example User";
            email.Address = "*****@*****.**";
            personalization.AddCc(email);
            email         = new Email();
            email.Name    = "Example User";
            email.Address = "*****@*****.**";
            personalization.AddCc(email);
            email         = new Email();
            email.Name    = "Example User";
            email.Address = "*****@*****.**";
            personalization.AddBcc(email);
            email         = new Email();
            email.Name    = "Example User";
            email.Address = "*****@*****.**";
            personalization.AddBcc(email);
            personalization.Subject = "Thank you for signing up, %name%";
            personalization.AddHeader("X-Test", "True");
            personalization.AddHeader("X-Mock", "True");
            personalization.AddSubstitution("%name%", "Example User");
            personalization.AddSubstitution("%city%", "Denver");
            personalization.AddCustomArgs("marketing", "false");
            personalization.AddCustomArgs("transactional", "true");
            personalization.SendAt = 1461775051;
            mail.AddPersonalization(personalization);

            Content content = new Content();

            content.Type  = "text/plain";
            content.Value = "Textual content";
            mail.AddContent(content);
            content       = new Content();
            content.Type  = "text/html";
            content.Value = "<html><body>HTML content</body></html>";
            mail.AddContent(content);
            content       = new Content();
            content.Type  = "text/calendar";
            content.Value = "Party Time!!";
            mail.AddContent(content);

            Attachment attachment = new Attachment();

            attachment.Content     = "TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gQ3JhcyBwdW12";
            attachment.Type        = "application/pdf";
            attachment.Filename    = "balance_001.pdf";
            attachment.Disposition = "attachment";
            attachment.ContentId   = "Balance Sheet";
            mail.AddAttachment(attachment);

            attachment             = new Attachment();
            attachment.Content     = "BwdW";
            attachment.Type        = "image/png";
            attachment.Filename    = "banner.png";
            attachment.Disposition = "inline";
            attachment.ContentId   = "Banner";
            mail.AddAttachment(attachment);

            mail.TemplateId = "13b8f94f-bcae-4ec6-b752-70d6cb59f932";

            mail.AddHeader("X-Day", "Monday");
            mail.AddHeader("X-Month", "January");

            mail.AddSection("%section1", "Substitution for Section 1 Tag");
            mail.AddSection("%section2", "Substitution for Section 2 Tag");

            mail.AddCategory("customer");
            mail.AddCategory("vip");

            mail.AddCustomArgs("campaign", "welcome");
            mail.AddCustomArgs("sequence", "2");

            ASM asm = new ASM();

            asm.GroupId = 3;
            List <int> groups_to_display = new List <int>()
            {
                1, 4, 5
            };

            asm.GroupsToDisplay = groups_to_display;
            mail.Asm            = asm;

            mail.SendAt = 1461775051;

            mail.SetIpPoolId = "23";

            // This must be a valid [batch ID](https://sendgrid.com/docs/API_Reference/SMTP_API/scheduling_parameters.html)
            // mail.BatchId = "some_batch_id";

            MailSettings mailSettings = new MailSettings();
            BCCSettings  bccSettings  = new BCCSettings();

            bccSettings.Enable       = true;
            bccSettings.Email        = "*****@*****.**";
            mailSettings.BccSettings = bccSettings;
            BypassListManagement bypassListManagement = new BypassListManagement();

            bypassListManagement.Enable       = true;
            mailSettings.BypassListManagement = bypassListManagement;
            FooterSettings footerSettings = new FooterSettings();

            footerSettings.Enable       = true;
            footerSettings.Text         = "Some Footer Text";
            footerSettings.Html         = "<bold>Some HTML Here</bold>";
            mailSettings.FooterSettings = footerSettings;
            SandboxMode sandboxMode = new SandboxMode();

            sandboxMode.Enable       = true;
            mailSettings.SandboxMode = sandboxMode;
            SpamCheck spamCheck = new SpamCheck();

            spamCheck.Enable       = true;
            spamCheck.Threshold    = 1;
            spamCheck.PostToUrl    = "https://gotchya.example.com";
            mailSettings.SpamCheck = spamCheck;
            mail.MailSettings      = mailSettings;

            TrackingSettings trackingSettings = new TrackingSettings();
            ClickTracking    clickTracking    = new ClickTracking();

            clickTracking.Enable           = true;
            clickTracking.EnableText       = false;
            trackingSettings.ClickTracking = clickTracking;
            OpenTracking openTracking = new OpenTracking();

            openTracking.Enable           = true;
            openTracking.SubstitutionTag  = "Optional tag to replace with the open image in the body of the message";
            trackingSettings.OpenTracking = openTracking;
            SubscriptionTracking subscriptionTracking = new SubscriptionTracking();

            subscriptionTracking.Enable           = true;
            subscriptionTracking.Text             = "text to insert into the text/plain portion of the message";
            subscriptionTracking.Html             = "<bold>HTML to insert into the text/html portion of the message</bold>";
            subscriptionTracking.SubstitutionTag  = "text to insert into the text/plain portion of the message";
            trackingSettings.SubscriptionTracking = subscriptionTracking;
            Ganalytics ganalytics = new Ganalytics();

            ganalytics.Enable           = true;
            ganalytics.UtmCampaign      = "some campaign";
            ganalytics.UtmContent       = "some content";
            ganalytics.UtmMedium        = "some medium";
            ganalytics.UtmSource        = "some source";
            ganalytics.UtmTerm          = "some term";
            trackingSettings.Ganalytics = ganalytics;
            mail.TrackingSettings       = trackingSettings;

            email         = new Email();
            email.Address = "*****@*****.**";
            mail.ReplyTo  = email;

            String ret = mail.Get();

            string  requestBody = ret;
            dynamic response    = sg.client.mail.send.post(requestBody: requestBody);

            Console.WriteLine(response.StatusCode);
            Console.WriteLine(response.Body.ReadAsStringAsync().Result);
            Console.WriteLine(response.Headers.ToString());

            Console.WriteLine(ret);
            Console.ReadLine();
        }
Ejemplo n.º 11
0
        /// ----------------------------------------------------------------------------- 
        /// <summary> 
        /// UpdateSettings saves the modified settings to the Database 
        /// </summary> 
        /// <remarks> 
        /// </remarks> 
        /// <history> 
        /// </history> 
        /// ----------------------------------------------------------------------------- 
        public override void UpdateSettings()
        {
            try
            {
                FooterSettings settingsData = new FooterSettings(this.TabModuleId);
                settingsData.ShowCopyright = this.chkCopyRight.Checked.ToString();
                settingsData.CopyrightText = this.txtCopyRightText.Text;
                settingsData.ShowPrivacy = this.chkPrivacy.Checked.ToString();
                settingsData.SecLinkToPrivacy = this.txtPrivacyLink.Text;
                settingsData.ShowContactUs = this.chkContactUs.Checked.ToString();
                settingsData.SecLinkToContactUs = this.txtContactUsLink.Text;
                settingsData.ShowLogo = this.chkLogo.Checked.ToString();
                settingsData.LinkToFacebook = this.txtFacebookLink.Text;
                settingsData.LinkToYoutube = this.txtYoutubeLink.Text;

            }
            catch (Exception exc)
            {
                //Module failed to load 
                Exceptions.ProcessModuleLoadException(this, exc);
            }
        }
        public byte[] GeneratePdfReport(int restaurantId)
        {
            var reservationsTableHtml = this.GenerateReservationsTableHtml(restaurantId);
            var restaurant            = this.RestaurantRepository.GetRestaurant(restaurantId);

            var            html           = $@"
                <!DOCTYPE html>
                <html lang=""en"">
                <head>
                    <h3>{restaurant.Title}</h3>
                    <style>
                        table {{
                          font - family: arial, sans-serif;
                          border-collapse: collapse;
                          width: 100%;
                        }}

                        td, th {{
                          border: 1px solid #dddddd;
                          text-align: left;
                          padding: 8px;
                        }}

                        tr:nth-child(even) {{
                          background - color: #dddddd;
                        }}
                    </style>
                </head>
                <body>
                <h1>Reservations for: {DateTime.Today.ToString("yyyy-MM-dd")}</h1>
                {reservationsTableHtml}
                </body>
                </html>
            ";
            GlobalSettings globalSettings = new GlobalSettings();

            globalSettings.ColorMode   = ColorMode.Color;
            globalSettings.Orientation = Orientation.Portrait;
            globalSettings.PaperSize   = PaperKind.A4;
            globalSettings.Margins     = new MarginSettings {
                Top = 10, Bottom = 10
            };
            ObjectSettings objectSettings = new ObjectSettings();

            objectSettings.PagesCount  = true;
            objectSettings.HtmlContent = html;
            WebSettings webSettings = new WebSettings();

            webSettings.DefaultEncoding = "utf-8";
            HeaderSettings headerSettings = new HeaderSettings();

            headerSettings.FontSize = 15;
            headerSettings.FontName = "Ariel";
            headerSettings.Right    = "Page [page] of [toPage]";
            headerSettings.Line     = true;
            FooterSettings footerSettings = new FooterSettings();

            footerSettings.FontSize       = 12;
            footerSettings.FontName       = "Ariel";
            footerSettings.Line           = true;
            objectSettings.HeaderSettings = headerSettings;
            objectSettings.FooterSettings = footerSettings;
            objectSettings.WebSettings    = webSettings;
            HtmlToPdfDocument htmlToPdfDocument = new HtmlToPdfDocument()
            {
                GlobalSettings = globalSettings,
                Objects        = { objectSettings },
            };

            return(this.Converter.Convert(htmlToPdfDocument));
        }
Ejemplo n.º 13
0
 /// <summary>
 /// Configure and render pdf
 /// </summary>
 /// <param name="optionalGlobalSettings">General configuration settings. Can be null</param>
 /// <param name="viewsToRenderString">A dictionary that passes the name of the view and the object to a string</param>
 /// <param name="hasPagesCount">A bool that is meant to say if the PDF will have a page counter or not</param>
 /// <param name="optionalWebSettings">Web configurations such as enabling JavaScript, setting a background or image. Can be null</param>
 /// <param name="optionalHeaderSettings">The text and it's configurations that goes on the header. Can be null</param>
 /// <param name="optionalFooterSettings">The text and it's configurations that goes on the footer. Can be null</param>
 /// <returns>Converter</returns>
 public async Task <byte[]> RenderPdfToByteArray(GlobalSettings optionalGlobalSettings, Dictionary <string, object> viewsToRenderString, bool hasPagesCount, WebSettings optionalWebSettings, HeaderSettings optionalHeaderSettings, FooterSettings optionalFooterSettings)
 {
     // render the pdf, convert it to byte[] and return the byte[]
     return(_converter.Convert(await RenderPdf(optionalGlobalSettings, viewsToRenderString, hasPagesCount, optionalWebSettings, optionalHeaderSettings, optionalFooterSettings)));;
 }
Ejemplo n.º 14
0
        /// <summary>
        /// Configure and render the pdf
        /// </summary>
        /// <param name="optionalGlobalSettings">General configuration settings. Can be null</param>
        /// <param name="viewsToRenderString">A dictionary that passes the name of the view and the object to a string</param>
        /// <param name="hasPagesCount">A bool that is meant to say if the PDF will have a page counter or not</param>
        /// <param name="optionalWebSettings">Web configurations such as enabling JavaScript, setting a background or image. Can be null</param>
        /// <param name="optionalHeaderSettings">The text and it's configurations that goes on the header. Can be null</param>
        /// <param name="optionalFooterSettings">The text and it's configurations that goes on the footer. Can be null</param>
        /// <returns>HtmlToPdfDocument</returns>
        public async Task <HtmlToPdfDocument> RenderPdf(GlobalSettings optionalGlobalSettings, Dictionary <string, object> viewsToRenderString, bool hasPagesCount, WebSettings optionalWebSettings, HeaderSettings optionalHeaderSettings, FooterSettings optionalFooterSettings)
        {
            // If the WebSettings is null, set it to a default
            if (optionalWebSettings == null)
            {
                optionalWebSettings = new WebSettings {
                    DefaultEncoding = "utf-8"
                }
            }
            ;

            // Intance of HtmlToPdfDocument to set the GlobalSettings
            HtmlToPdfDocument htmlToPdfDocument = new HtmlToPdfDocument()
            {
                GlobalSettings = optionalGlobalSettings
            };

            // A loop that will go through each view and will add it to a object list with its own data
            foreach (var item in viewsToRenderString)
            {
                htmlToPdfDocument.Objects.Add(new ObjectSettings
                {
                    PagesCount     = hasPagesCount,
                    HtmlContent    = await _viewRender.RenderToStringAsync(item.Key, item.Value),
                    WebSettings    = optionalWebSettings,
                    HeaderSettings = optionalHeaderSettings,
                    FooterSettings = optionalFooterSettings
                });
            }

            // Return the PDF
            return(htmlToPdfDocument);
        }
    }
Ejemplo n.º 15
0
        public static byte[] ExportPDF(string url, int no_copy = 1, double zoomfactor = 1.28, int javascriptdelay = 0)
        {
            var result = (dynamic)null;

            //var _headerSettings = new HeaderSettings { HtmlUrl = "http://google.com", ContentSpacing = 10 };
            //string headerPath = Path.Combine("http://lowen.activitystaging.com:81/pdfTemplate/img/banner.jpg");

            //var _headerSettings = new HeaderSettings { HtmlUrl = "<h1><font color=red>Hello</font></H1>", ContentSpacing = 10 };
            var marginSettings = new MarginSettings {
                All = 2.5, Top = 5, Unit = Unit.Centimeters
            };
            var _footerSettings = new FooterSettings {
                ContentSpacing = 10, FontSize = 10, RightText = "[page] / [topage]"
            };



            try
            {
                var doc = new HtmlToPdfDocument();
                doc.Objects.Add(new ObjectSettings
                {
                    PageUrl     = url,
                    WebSettings =
                    {
                        //   EnableIntelligentShrinking=true,
                        EnableJavascript = true,
                        LoadImages       = true,
                        PrintBackground  = true,
                        EnablePlugins    = true,
                    },
                    LoadSettings =
                    {
                        ZoomFactor  = zoomfactor,
                        RenderDelay = javascriptdelay
                    },
                    // HtmlText = "<h1>welcome</h1>",

                    //HeaderSettings = new HeaderSettings { LeftText = "Sample"},
                    //HeaderSettings = _headerSettings,
                    // HeaderSettings = new HeaderSettings { HtmlUrl = headerPath },
                    //  HeaderSettings = { RightText = "<h1>welcome</h1>", ContentSpacing = 10 },
                    //  FooterSettings = _footerSettings,

                    // FooterSettings = new FooterSettings { LeftText = "Last", RightText = "[page]" },
                });



                doc.GlobalSettings.PaperSize = PaperKind.A4;
                doc.GlobalSettings.Copies    = no_copy;
                result = converter.Convert(doc);

                //remotingToolset.Unload();
            }
            catch (Exception ex)
            {
                //remotingToolset.Unload();
                result = null;
            }
            return(result);
        }