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?
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);' –