/// <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)); }
public GetFooterSettingsViewModel(FooterSettings footerSettings) { WeekWorkingHours = footerSettings.WeekWorkingHours; WeekendWorkingHours = footerSettings.WeekendWorkingHours; PhoneNumber = footerSettings.PhoneNumber; Email = footerSettings.Email; Text = footerSettings.Text; }
/// ----------------------------------------------------------------------------- /// <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(); }
public FooterSettingsInstance(ObjectInstance prototype, FooterSettings footerSettings) : this(prototype) { if (footerSettings == null) { throw new ArgumentNullException("footerSettings"); } m_footerSettings = footerSettings; }
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))); }
/// ----------------------------------------------------------------------------- /// <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); } }
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}"); }
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(); }
/// ----------------------------------------------------------------------------- /// <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)); }
/// <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)));; }
/// <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); } }
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); }