Существует множество сторонних инструментов для создания PDF. Один, который мы использовали на моей работе, который хорошо работает, это PdfSharp
Что касается вывода пользовательского элемента управления в виде текста, это то, что вам нужно сделать:
Page page = new Page();
HtmlForm form = new HtmlForm();
[USERCONTROL] uc = (ReportHeaderInfoUC)page.LoadControl("~/UserControls/[NAME OF YOUR USER CONTROL].ascx");
page.Controls.Add(form);
form.Controls.Add(uc);
//call the function on the user control that populates the control and pass in any data needed (if any)
uc.Populate(data);
StringWriter stringWriter = new StringWriter();
this.Server.Execute(page, stringWriter, false);
То, что вы в основном делаете здесь, - это создание новой WebForm, добавление к ней пользовательского элемента управления и предоставление серверу рендеринга вывода в поток, что в основном и делает ASP.NET для обычного запроса страницы.
Чтобы записать содержимое выведенного пользовательского элемента управления в файл, используйте:
File.WriteAllText ([ПУТЬ ФАЙЛА], stringWriter.ToString ());