Voici ce que j'ai pu obtenir un travail sur la version 5.4.2 (à partir de la nuget installer) pour renvoyer une réponse à partir d'un pdf asp.net mvc contrôleur. Il pourrait être transforme utiliser un FileStream au lieu de MemoryStream de la sortie si c'est ce qui est nécessaire.
Je poste ici parce que c'est un exemple actuel de iTextSharp l'utilisation de l'html> conversion en pdf (en faisant abstraction des images, je n'ai pas regardé depuis mon utilisation n'en a pas besoin)
Il utilise iTextSharp de XmlWorkerHelper, de sorte que les entrants hmtl doit être valide XHTML, de sorte que vous devrez effectuer la correction en fonction de votre entrée.
using iTextSharp.text.pdf;
using iTextSharp.tool.xml;
using System.IO;
using System.Web.Mvc;
namespace Sample.Web.Controllers
{
public class PdfConverterController : Controller
{
[ValidateInput(false)]
[HttpPost]
public ActionResult HtmlToPdf(string html)
{
html = @"<?xml version=""1.0"" encoding=""UTF-8""?>
<!DOCTYPE html
PUBLIC ""-//W3C//DTD XHTML 1.0 Strict//EN""
""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"">
<html xmlns=""http://www.w3.org/1999/xhtml"" xml:lang=""en"" lang=""en"">
<head>
<title>Minimal XHTML 1.0 Document with W3C DTD</title>
</head>
<body>
" + html + "</body></html>";
var bytes = System.Text.Encoding.UTF8.GetBytes(html);
using (var input = new MemoryStream(bytes))
{
var output = new MemoryStream(); // this MemoryStream is closed by FileStreamResult
var document = new iTextSharp.text.Document(iTextSharp.text.PageSize.LETTER, 50, 50, 50, 50);
var writer = PdfWriter.GetInstance(document, output);
writer.CloseStream = false;
document.Open();
var xmlWorker = XMLWorkerHelper.GetInstance();
xmlWorker.ParseXHtml(writer, document, input, null);
document.Close();
output.Position = 0;
return new FileStreamResult(output, "application/pdf");
}
}
}
}