У меня есть вопрос из двух частей об использовании iTextSharp. Я создал простое приложение MVC для хранения информации об «извлеченных уроках» в базе данных SQL Server. Когда пользователь просматривает детали урока, я хочу, чтобы он мог сохранить урок в формате PDF. У меня есть некоторый рабочий код, но 1) я не уверен, насколько здравым является мой подход и 2) приложение MVC использует редактор форматированного текста TinyMCE, и когда я помещаю форматированный текст в PDF, отображаются HTML-теги. Как получить PDF-файл для форматирования HTML (полужирные шрифты, неупорядоченные списки, абзацы и т. Д.)?
Ниже приведен код, который я использую для создания PDF. Буду очень признателен за обратную связь, если я расскажу об этом неправильно.
Спасибо.
public FilePathResult GetPDF(int id)
{
Lesson lesson = lessonRepository.GetLesson(id);
string pdf = @"C:\Projects\Forms\LessonsLearned\PDF\template_test.pdf";
string outputFilePath = @"C:\Temp\pdf_output\test_template_filled.pdf";
PdfReader pdfReader = null;
try
{
pdfReader = new PdfReader(pdf);
using (FileStream pdfOutputFile = new FileStream(outputFilePath, FileMode.Create))
{
PdfStamper pdfStamper = null;
try
{
pdfStamper = new PdfStamper(pdfReader, pdfOutputFile);
AcroFields acroFields = pdfStamper.AcroFields;
acroFields.SetField("title", lesson.Title);
acroFields.SetField("owner", lesson.Staff.FullName);
acroFields.SetField("date", lesson.DateEntered.ToShortDateString());
// field with rich text
acroFields.SetField("situation", Server.HtmlDecode(lesson.Situation));
acroFields.SetField("description", Server.HtmlDecode(lesson.Description));
pdfStamper.FormFlattening = true;
}
finally
{
if (pdfStamper != null)
{
pdfStamper.Close();
}
}
}
}
finally
{
pdfReader.Close();
}
return File(outputFilePath, "application/pdf", "Lesson_" + lesson.ID + ".pdf");
}