我有兩個部分關於使用iTextSharp的問題。我已經構建了一個簡單的MVC應用程序,用於在SQL Server數據庫中存儲有關「經驗教訓」的信息。當用戶查看課程的詳細信息時,我希望他們能夠將課程保存爲PDF。我有一些工作代碼,但1)我不知道我的方法是多麼的健全,2)MVC應用程序使用TinyMCE富文本編輯器,當我將豐富的文本放入PDF時,html標籤正在顯示。如何獲得PDF以兌現html格式(粗體字體,無序列表,段落等)?使用iTextSharp與MVC
下面是我用來生成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");
}
感謝您的回覆David。是的,我很擔心FileStream。我希望能夠打開模板PDF並使用我的數據庫中的數據填充它,但正如您所說,我不需要保存生成的文件供以後使用。你有可以分享的任何示例代碼嗎?我只是一種黑客一起。 在HTML標籤前面 - 我將嘗試HTMLWorker類。 – user353024 2010-05-28 16:20:57
我有HTMLWorker類解析HTML,但我不明白的是,如果可以格式化PDF中的文本,使其看起來類似於HTML中的外觀...請需要建議! – user353024 2010-05-28 18:11:19