J'ai une question en deux parties sur l'utilisation de iTextSharp. J'ai construit une application MVC simple pour stocker des informations sur les «leçons apprises» dans une base de données SQL Server. Quand un utilisateur regarde les détails d'une leçon, je veux qu'ils soient en mesure de sauvegarder la leçon en format PDF. J'ai un peu de code de travail mais 1) Je ne suis pas sûr comment mon approche est et 2) l'application MVC utilise un éditeur de texte riche TinyMCE et quand je mets le texte riche dans le PDF les balises html sont affichées. Comment puis-je obtenir le PDF pour honorer le formatage html (polices en gras, listes non ordonnées, paragraphes, etc.)?en utilisant iTextSharp avec MVC
Voici le code que j'utilise pour générer le PDF. J'apprécierais vraiment la rétroaction si je vais mal à ce sujet.
Merci.
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");
}
Merci pour la réponse David. Oui, j'étais inquiet au sujet du FileStream. Je veux être en mesure d'ouvrir un fichier PDF de modèle et le remplir avec les données de ma base de données mais, comme vous le dites, je n'ai pas besoin de sauvegarder le fichier résultant pour une utilisation ultérieure. Avez-vous un exemple de code que vous pourriez partager? Je suis juste en train de pirater ça ensemble. Sur le front de balise HTML - je vais essayer la classe HTMLWorker. – user353024
J'ai la classe HTMLWorker en train d'analyser le HTML mais ce que je ne comprends pas, c'est s'il est possible de formater le texte dans le PDF pour qu'il ressemble à HTML ... a besoin de conseils s'il vous plait! – user353024