iTextSharp返回无法打开的pdf

时间:2016-08-11 12:16:38

标签: asp.net-mvc pdf-generation itext

我已经按照this question中的答案进行了操作,并尝试使用iTextSharp从MVC视图输出pdf来测试渲染保真度。

我有以下代码:

var ms = new MemoryStream();

var document = new Document(PageSize.A4, 10, 10, 10, 10);

var writer = PdfWriter.GetInstance(document, ms);

document.Open();
var html = this.RenderView(GetViewName(), reportVM);
var css = System.IO.File.ReadAllText(Path.Combine(Directory.GetCurrentDirectory(), "\\Content\\site.css"));

var msCss = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(css));

var msHtml = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(html));

XMLWorkerHelper.GetInstance().ParseXHtml(writer, document, msHtml, msCss);

document.Close();

return File(ms, "application/pdf");

不幸的是,它会在浏览器中返回一个窗口,其中包含以下消息:

  

无法加载PDF

这种行为的主要原因是什么?

注意:我使用基于iTextSharp的PdfSharp从同一个html制作了一个pdf,所以我想我没有正确使用iTextSharp。

编辑:

我在评论中遵循了布鲁诺的建议,所以我改回了:

 bytes = ms.ToArray();

 return File(new MemoryStream(bytes), "application/pdf");

现在结果是2页空pdf,所以它更好,但是可以使它更准确,因为pdf的内容应该有一些文本吗?

1 个答案:

答案 0 :(得分:0)

我在this question中看到答案并删除了div中的width标签,并运行online XHtml validator来调整其他所有内容后,我能够相对生成一个pdf相应的HTML。