/// <summary> /// Prints range of text /// </summary> public static void Print(FastColoredTextBox textbox, Range range, PrintDialogSettings settings) { //prepare export with wordwrapping var exporter = new ExportToHTML(); exporter.UseBr = true; exporter.UseForwardNbsp = true; exporter.UseNbsp = true; exporter.UseStyleTag = false; exporter.IncludeLineNumbers = settings.IncludeLineNumbers; if (range == null) range = textbox.Range; if (range.Text == string.Empty) return; //change visible range textbox.visibleRange = range; try { //call handlers for VisibleRange textbox.CallVisibleRangeHandlers(); } finally { //restore visible range textbox.visibleRange = null; } //generate HTML string HTML = exporter.GetHtml(range); HTML = "<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=UTF-8\"><head><title>" + PrepareHtmlText(settings.Title) + "</title></head>" + HTML + "<br>" + SelectHTMLRangeScript(textbox); string tempFile = Path.GetTempPath() + "fctb.html"; File.WriteAllText(tempFile, HTML); //clear wb page setup settings SetPageSetupSettings(settings); //create wb var wb = new WebBrowser(); wb.Tag = settings; wb.Visible = false; wb.Location = new Point(-1000, -1000); wb.Parent = textbox; wb.StatusTextChanged += wb_StatusTextChanged; wb.Navigate(tempFile); }