Недавно я столкнулся с проблемой, связанной с выводом 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)