iTextSharp |Не удается вывести PDF в IE - PullRequest
1 голос
/ 09 января 2012

Недавно я столкнулся с проблемой, связанной с выводом PDF-файла, созданного в iTextSharp, в новое окно, и не смог найти способ исправить проблему.

Эта проблема, похоже, возникает только в 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 and 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, сейчас я просто в тупике.)

Буду очень признателен за любые идеи / предложения по улучшению этого процесса.

ОБНОВЛЕНИЕ


Я тестировал некоторые из предложенных изменений, и когда я удалил области, в которых будет построен документ, и просто добавил следующее:

document.Add(new Phrase("TEST"));

который добавит одну строку в PDF, а затем сгенерирует ееЯ получил сообщение об ошибке «Internet Explorer не может отобразить веб-страницу» с параметром «Диагностика проблем с подключением».Если щелкнуть параметр «Диагностика проблем с подключением» и он завершается, PDF-файл загружается, как предполагалось.

Может ли быть проблема с тем, что PDF-файл не «готов», когда новое окно пытается его загрузить?

(это в IE8)

1 Ответ

0 голосов
/ 12 января 2012

Мне удалось наконец решить эту проблему.Похоже, что окно открывалось до того, как PDF был готов к отображению.(Это было определено простым обновлением окна, после чего PDF-файл отображался бы правильно.)

Поэтому вместо того, чтобы открывать окно для определенного URL-адреса, я сгенерировал окно и открыл URL-адрес изнутри окна, которое казалосьчтобы исправить проблему.)

...