Как печатать текущую страницу с 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");
}
сохраняет пустой пдф документ...

21 Авг 2019 в 06:28
198 +1
0
Ответы
1

Вы можете использовать библиотеку 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 элементы и стили на вашей веб-странице, поэтому результат может отличаться от оригинала.

20 Апр 2024 в 13:18
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир