Как печатать текущую страницу с webBrowser control в pdf? Всем привет! Хочу печатать текущую страницу с webBrowser в pdf В 10 винде есть “Microsoft Print to PDF” Стандартные примеры, когда принтеру посылают графику - работают.... а вот как послать на печать текущую страницу webBrowser контрола? Причем без диалоговых окон, так как мне программно разные страницы нужно сохранять.private void button4_Click(object sender, EventArgs e) { // generate a file name as the current date/time in unix timestamp format string file = (string)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds.ToString(); // the directory to store the output. string directory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); // initialize PrintDocument object PrintDocument doc = new PrintDocument(); doc.PrintPage += new PrintPageEventHandler(this.pd_PrintPage);
doc.PrinterSettings.PrinterName = "Microsoft Print to PDF"; // tell the object this document will print to file doc.PrinterSettings.PrintToFile = true; doc.PrinterSettings.PrintFileName = Path.Combine(directory, file + ".pdf"); doc.Print(); //webBrowser1.Print(); } private void pd_PrintPage(object o, PrintPageEventArgs e) { webBrowser1.Navigate("https://stackoverflow.com/questions/40812996/programmatically-provide-a-filepath-as-input-file-for-microsoft-print-to-pdf-p"); } сохраняет пустой пдф документ...
Вы можете использовать библиотеку iTextSharp для создания PDF файлов в C#. Вот пример кода, который позволит вам сохранить текущую страницу webBrowser control в PDF файл:
private void button4_Click(object sender, EventArgs e) { // generate a file name as the current date/time in unix timestamp format string file = (string)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds.ToString(); // the directory to store the output. string directory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); // initialize a PDF document iTextSharp.text.Document doc = new iTextSharp.text.Document(); PdfWriter.GetInstance(doc, new FileStream(Path.Combine(directory, file + ".pdf"), FileMode.Create)); doc.Open(); // get the HTML content of the web page string html = webBrowser1.DocumentText; // parse the HTML content and add it to the PDF document iTextSharp.text.html.simpleparser.HTMLWorker worker = new iTextSharp.text.html.simpleparser.HTMLWorker(doc); worker.Parse(new StringReader(html)); doc.Close(); }
Убедитесь, что вы добавили ссылку на библиотеку iTextSharp именно для вашего проекта. Также, учтите, что данная библиотека может не обрабатывать все HTML элементы и стили на вашей веб-странице, поэтому результат может отличаться от оригинала.
Вы можете использовать библиотеку iTextSharp для создания PDF файлов в C#. Вот пример кода, который позволит вам сохранить текущую страницу webBrowser control в PDF файл:
private void button4_Click(object sender, EventArgs e){
// generate a file name as the current date/time in unix timestamp format
string file = (string)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds.ToString();
// the directory to store the output.
string directory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
// initialize a PDF document
iTextSharp.text.Document doc = new iTextSharp.text.Document();
PdfWriter.GetInstance(doc, new FileStream(Path.Combine(directory, file + ".pdf"), FileMode.Create));
doc.Open();
// get the HTML content of the web page
string html = webBrowser1.DocumentText;
// parse the HTML content and add it to the PDF document
iTextSharp.text.html.simpleparser.HTMLWorker worker = new iTextSharp.text.html.simpleparser.HTMLWorker(doc);
worker.Parse(new StringReader(html));
doc.Close();
}
Убедитесь, что вы добавили ссылку на библиотеку iTextSharp именно для вашего проекта. Также, учтите, что данная библиотека может не обрабатывать все HTML элементы и стили на вашей веб-странице, поэтому результат может отличаться от оригинала.