HTTPリソースでAngularJSを使用して外部APIを呼び出していますが、応答はバイト配列です。このバイト配列を新しいウィンドウでPDFに変換する必要があります。クロスブラウザーで動作する、または純粋なjavascriptである非常に優れたソリューションはここにはありません。これを行う?
ここに私のコードがあります:
Javascript
Document.preview({id: $scope.order.id}, function(data){
// Open PDF Here
var file = new Blob([data], {type: 'application/pdf'});
var fileURL = URL.createObjectURL(file);
window.open(fileURL);
});
それでも誰かがそれを探しているなら、ここに私がやっていること(そして働いている)があります:
var pdfAsDataUri = "data:application/pdf;base64,"+byteArray;
window.open(pdfAsDataUri);
ここで、byteArrayは受け取るデータです。それはおそらくニースのソリューションではありません(バイト配列はURLに表示されます)が、動作します...
サービス呼び出しでresponseTypeを渡す必要があります
$http.post('/Service-URL', dataTO, {responseType: 'arraybuffer'});
データ呼び出しが成功すると、新しいウィンドウでpdfが開きます:
InfoFactory.getDocument()
.success(function(data) {
var file = new Blob([data], { type: 'application/pdf' });
var fileURL = URL.createObjectURL(file);
window.open(fileURL, "EPrescription");
})
この答えから: https://stackoverflow.com/a/21730535/3645957 by https://stackoverflow.com/users/2688545/michael