2014-11-10 3 views
2

Я пытаюсь открыть локальный файл pdf и распечатать его. Он работает для файлов до 5 kb, но требуется время для загрузки больших файлов в течение 1000 мс и hangs.I хочу, чтобы это было динамически и не нужно устанавливать таймаут. Я пробовал window.onload, но он не работает. Также я не хочу добавлять какое-либо событие onload на страницу печати.Открытие и печать больших файлов в javascript

Есть ли эффективное решение

var win=window.open(printUrl); 
setTimeout(function() { 
     win.print(); 
     win.close(); 
     }, 1000); 
+0

Ответ прост: Вы не делаете. Мое предложение: перестаньте работать, как работает веб-браузер, не открывайте вещи в новых окнах. Просто обеспечьте нормальную ссылку в файле PDF и нажмите кнопку печати непосредственно в программе просмотра PDF. – RoToRa

+0

Спасибо. У нас есть собственное требование, и он должен открыть только диалог печати. – Althaf

+0

Требования не изменяют работу веб-браузеров. – RoToRa

ответ

1

Обнаружено обходное решение для этого. Использовали PDF-Javascripts и встроили Javascript для печати файла. Это гарантирует, что файл будет напечатан только после загрузки страницы.

Я использовал PDFbox разобрать содержимое PDF и добавил ниже:

PDActionJavaScript javascript = new PDActionJavaScript("this.print();"); 
0

Сегодня кажется, что это не возможно, чтобы получить уведомление, когда файл PDF загружен на ваших страницах.

События DOMContentLoad и load не срабатывают в iframes, embed, object или всплывающих окон при работе с PDF-файлами.

Однако есть надежда на будущее, the HTML5 specs says about the embed tag:

Извлечение ресурса должен задержать событие нагрузки документа элемента.

Но до сих пор, в Chrome 38 и IE11 это не так же, событие документ load обжигают, как только будет загружен HTML.

Смежные вопросы