javascript - Trenger å åpne blob/PDF i IE-vindu


Jeg har koden nedenfor i TypeScript for å kalle en web-API-metode og hente et binært byte-array (blob) som er en PDF. Brukerkravet mitt er å åpne PDF-en i et nytt vindu.

$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
            });
        });
    }

Denne koden fungerer bra i Chrome. Dokumentet åpnes som forventet. IE derimot spør «Vil du tillate at dette nettstedet åpner en app på datamaskinen din?» og når det tillates, sier den «Ingen apper er installert for å åpne denne typen lenke (blob)».

Noen ideer om hvordan man kan åpne dette i en ny fane eller lagre blobben som en fil som en siste utvei?

Svar #1

Grunnen til at det fungerer i Chrome og andre vanlige nettlesere: de har en PDF-forhåndsvisning installert inni dem.

Leieavtalen hvorfor den ikke fungerer i IE: siden i arkitektur, hvis IE, bør det være et PDF-leseprogram installert på operativsystemet; for eksempel, hvis du har Adobe Acrobat installert, vil du åpne det uten problemer.

Jeg kan anbefale deg å bruke: pdf.js/.

Relaterte artikler