2015-12-23 13 views
10

Ho il seguente codice nel mio typescript per chiamare un metodo web API e recuperare un array di byte binari (blob) che è un PDF. Il mio requisito utente è di aprire il PDF in una nuova finestra.Necessario aprire blob/PDF nella finestra di IE

$scope.selectRow = (itemImageNumber: string, printProcessId: string, printXmlId: string) => { 
     itemService.GetOutgoingDocument($scope.item.ItemId, itemImageNumber, printProcessId, printXmlId).success((response) => { 
      var file = new Blob([response], { type: 'application/pdf' }); 
      var fileUrl = URL.createObjectURL(file); 
      //$scope.outDocContent = $sce.trustAsResourceUrl(fileUrl); 
      var win = window.open($sce.trustAsResourceUrl(fileUrl)); 
      win.focus(); 
     }).error(() => { 
      var message = 
       "The document you selected can’t be displayed at this time. Please call Customer Service at xxx-xxx-xxxx for assistance."; 
      $rootScope.$broadcast("app-message", { 
       type : "danger", 
       message : message 
      }); 
     }); 
    } 

Questo codice funziona bene in Chrome. Il documento si apre come previsto. IE tuttavia chiede "Vuoi consentire a questo sito web di aprire un'app sul tuo computer?" e quando consentito, dimmi "Nessuna app è installata per aprire questo tipo di collegamento (blob)".

Qualche idea su come aprirlo in una nuova scheda o salvare il BLOB come file come ultima risorsa?

+3

Wild guess: ci sono domande simili che potrebbero essere di aiuto: http://stackoverflow.com/questions/28196065/downloading-pdf-as-blob-with-js-in-ie9, http://stackoverflow.com/questions/24007073/open-links-made-by-createobjecturl-in-ie11 In particolare questa linea specifica per IE potrebbe essere interessante: 'window.navigator.msSaveOrOpenBlob (blobObject, fileName);' –

risposta

0

Il motivo per cui funziona in Chrome e altri browser normali: hanno installato il pdf previewer al loro interno.

Il contratto di locazione perché non funziona in IE: poiché in architettura se IE ci dovrebbe essere qualche programma di lettura PDF installato sul sistema operativo; per esempio, se hai installato Adobe Acrobat, lo aprirai senza problemi.

Posso consigliare di utilizzare: pdf.js/.

Problemi correlati