Divya Naidu Ответов: 1

Преобразование страницы aspx в pdf-файл во время выполнения


КАК ПРЕОБРАЗОВАТЬ СТРАНИЦУ ASPX В PDF-ФАЙЛ ВО ВРЕМЯ ВЫПОЛНЕНИЯ?
Я ПРОБОВАЛ РАЗНЫЕ КОДЫ, НО НИ ОДИН ИЗ НИХ НЕ РАБОТАЕТ ДЛЯ МЕНЯ?PLZ ПОМОГИТЕ МНЕ, ПОПРОБОВАЛ С ITEXTSHARP, PDF-ФАЙЛ СОЗДАЕТСЯ, НО ТОЛЬКО СО СТАТИЧЕСКИМИ ЭЛЕМЕНТАМИ УПРАВЛЕНИЯ,ТАКИМИ КАК МЕТКИ, ПАНЕЛИ И Т. Д., СОЗДАННЫМИ ВО ВРЕМЯ HTML-ДИЗАЙНА.Я НЕ МОГУ ДИНАМИЧЕСКИ ВВОДИТЬ ТЕКСТ В ТЕКСТОВОЕ ПОЛЕ И ОТОБРАЖАТЬ ЕГО В PDF-ФАЙЛЕ.
ПОЖАЛУЙСТА, ПОМОГИТЕ МНЕ С ЭТИМ.ЗАРАНЕЕ СПАСИБО.

Bala Selvanayagam

Не могли бы вы, пожалуйста, не использовать верхний регистр при размещении вопросов. Вопросы в верхнем регистре воспринимаются как грубое поведение и не мотивируют никого отвечать/помогать вам.

Пожалуйста, используйте ссылку "улучшить вопрос" и измените свой вопрос на правильный корпус.

1 Ответов

Рейтинг:
7

Sazzad Hossain

вам нужно использовать что-то вроде MigraDoc из PDFSharp для рендеринга HTML в PDF. ССЫЛКА: http://www.pdfsharp.com/[^]

А теперь, чтобы создать вывод HTML, включая элементы управления на стороне сервера, вам нужно поместить все коды страниц в один пользовательский элемент управления и перейти по ссылке, чтобы сгенерировать HTML во время выполнения, который будет генерировать выходной html, который вам нужно затем передать в MigraDoc для создания PDF-документа.

StringBuilder SB = new StringBuilder();
StringWriter SW = new StringWriter(SB);
HtmlTextWriter htmlTW = new HtmlTextWriter(SW);
UCDummy.Visible = true;
UCDummy.RenderControl(htmlTW);
WhereEverIWantItToGo = SB.ToString();
UCDummy.Visible = false;


http://www.velocityreviews.com/forums/t104419-render-and-get-html-from-usercontrol.html[^]

Я уже использовал эту технику раньше,но сейчас не могу найти фрагмент кода. Пришлите мне электронное письмо, Если вам это нужно, мне придется немного покопаться.

--------------------------- НОВЫЙ ОБРАЗЕЦ КОДА ---------------------

допустим, вы хотите визуализировать всю страницу aspx и получить вывод в html-строке, которую затем можете отправить в pdf-генератор:

System.Text.StringBuilder sb = new StringBuilder();
System.IO.StringWriter tw = new System.IO.StringWriter(sb);
System.Web.UI.HtmlTextWriter ht = new HtmlTextWriter(tw);
this.RenderControl(ht);				
string body = sb.ToString();


просто в качестве подсказки... прежде чем сделать это.. возможно, вам захочется отключить элементы управления верхним и нижним колонтитулами ur, если они вам не нужны. Это также легко сделать, просто перед вызовом RenderControl сделайте эти элементы управления видимыми для скрытых.

Главный ключ здесь-это это.RenderControl, который принимает HtmlTextWriter.

Надеюсь, это поможет.

Спасибо..


Divya Naidu

Большое вам спасибо за вашу помощь в этой теме, саззад.Не могли бы вы предоставить мне полный код, который был бы действительно полезен для меня.Еще раз спасибо за Ваш ответ.

Sazzad Hossain

этот.RenderControl(ht); здесь это означает страницу aspx u r in....