2012-01-09 38 views
1

我最近遇到有关将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中)

+0

可能你或许返回的内容作为字节数组..?看看这个链接,看看这也许可以帮助..http://www.4guysfromrolla.com/articles/030911- – MethodMan 2012-01-09 16:59:33

+0

PDF只是下载也许?如果没有,放弃PDF写作部分,并尝试只写原始HTML,以确保IE没有其他问题。 – 2012-01-09 17:50:12

+0

不是 - 它不是下载。我在那里有一个标志用于_isExport来确定它是否应该被下载,除此之外,导出和打印是相同的。导出作品如魅力,然而打印不是。 (这也只发生在IE浏览器中) – 2012-01-09 17:59:18

回答

0

我设法最终解决了这个问题。看起来,该窗口在PDF准备好显示之前打开。 (这是通过刷新窗口来确定的,然后PDF将正常显示。)

因此而不是打开的窗口到特定的URL,我产生一个窗口,从窗口,这似乎解决该问题时打开的网址。)

+0

我生成了一个窗口并从窗口中打开了URL,请解释如何执行此操作。 – 2017-10-04 12:24:49