2014-11-11 5 views
2

Я пытаюсь открыть PDF-файл в новом окне и автоматически отображать диалоговое окно печати. ​​Для этого мне нужно найти, когда файл будет полностью загружен. Я пробовал win.Onload и document.readystate === завершен, но оба они срабатывают, как только окно загружается, и не дожидаясь загрузки PDF-файла. Также нельзя использовать таймаут, так как размер файла может отличаться.Обнаруживает, полностью ли загружен файл PDF

Есть ли какой-либо компонент DOM, чтобы узнать, полностью ли загружен PDF-файл.

var win=window.open(printUrl); 
win.print(); 

Любая помощь по этому вопросу?

+0

Вы можете сначала загрузить файл в память, а затем открыть URL-адрес данных и добавить небольшую задержку (по мере того, как файл загружается из памяти, он должен быть показан намного быстрее, чем из URL-адреса). Насколько я знаю, плагин pdf не позволяет проверять, полностью ли загружен документ или нет. – Icepickle

+0

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

ответ

0

У нас есть исправление для этой проблемы в Angular JS.

В HTML вы можете иметь следующий код

<button ng-click="printPdf('path_of_pdf')">Print Labels</button> 

В JavaScript вы должны написать функцию следующим образом

$scope.printPdf(path){ 

     var myWindow = window.open(path, '', 'width=700,height=500'); 
     if(myWindow) 
     { 
      var original = Promise.resolve(myWindow); 
      original.then(function(value){ 
       myWindow.focus(); 
      }).then(function(){ 
       $scope.$evalAsync(function(){ 
       setTimeout(function(){ 
        myWindow.print(); 
       }, 2000); 
       }); 
      }); 
     } 

     } 

Он работает, как мы ожидали. Диалоговое окно печати будет открыто только после завершения рендеринга PDF.

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