我最近遇到有关将iTextSharp中生成的PDF输出到新窗口的问题,但无法找出解决问题的方法。iTextSharp |无法在IE中输出PDF
这个问题似乎只发生在IE浏览器,并在新的窗口打开时,它仍然是空白的,似乎并没有加载PDF。 (凡为Chrome和Firefox似乎工作就好了)
我将要经历的过程的概述中大家提供一些帮助的希望:
第1步:
用户点击“打印”按钮,我有一个视图中,这将调用下面的JavaScript执行:
window.open($("#PrintURL").val(), 'Print_Preview', 'resizable=1');
步骤2:
被称为拉动相应的数据到一个模型,然后将URL传递到这一点的局部视图,其被传递到一个PDFResult,如图所示:
//Grabs the Data
var data = reportAgent.GetData();
//Builds a string that contains the Report layout and builds the Report
string html = ControllerContext.RenderPartialAsString("~/Views/Reports/Report.cshtml", data);
return new PDFResult(html, ...);
步骤3 :
在PDFResult ExecuteResult()
方法中,我构建报表将输出的文档,并调整其他参数,例如PageSize,Headers和Footers。
public override void ExecuteResult(ControllerContext context)
{
//Sets Response to output a PDF
var response = context.HttpContext.Response;
response.ContentType = "application/pdf";
//Generate Document
Document document = new Document();
//Sets Page Size and Styles
//Build Headers and Footers and Add to Document
//Builds the document writer and prepares a Print Dialog upon opening
PdfWriter writer = PdfWriter.GetInstance(document, context.HttpContext.Response.OutputStream);
PdfAction action = new PdfAction(PdfAction.PRINTDIALOG);
writer.SetOpenAction(action);
writer.PageEvent = page;
document.Open();
//Iterates through the html string that was passed in and formats the document
document.Close();
}
我似乎无法弄清楚为什么新窗口在Internet Explorer中保持空白,而大多数其他浏览器似乎工作得很好。 (我知道我过去曾在IE中使用过相同的流程,现在我只是难住了。)
任何想法/建议,以改善这一进程将不胜感激。
UPDATE
我测试了一些变化表明,当我删除了将建立文档的区域,只是增加了以下内容:
document.Add(new Phrase("TEST"));
这将只需将一行添加到PDF中,然后生成它。我收到了“Internet Explorer无法显示网页”的错误,并提供了诊断连接问题的选项。单击“诊断连接问题”选项并完成时,将按预期加载PDF。
当新窗口尝试加载时,这可能是PDF未被“就绪”的问题吗?
(这是在IE8中)
可能你或许返回的内容作为字节数组..?看看这个链接,看看这也许可以帮助..http://www.4guysfromrolla.com/articles/030911- – MethodMan 2012-01-09 16:59:33
PDF只是下载也许?如果没有,放弃PDF写作部分,并尝试只写原始HTML,以确保IE没有其他问题。 – 2012-01-09 17:50:12
不是 - 它不是下载。我在那里有一个标志用于_isExport来确定它是否应该被下载,除此之外,导出和打印是相同的。导出作品如魅力,然而打印不是。 (这也只发生在IE浏览器中) – 2012-01-09 17:59:18