簡體   English   中英

Angular 7 pdf 顯示來自 blob 的文件

[英]Angular 7 pdf display file from blob

I'm returning a FileContentResult from my c# .NET API, in my angular 7 application I receive it as a blob with HttpClient and then use the following to open a new tab and try to display it.

this.myService.GetPdfBlob().subscribe(data => {
   var fileURL = window.URL.createObjectURL(data);
   window.open(fileURL, '_blank');
})

完成此操作后,它會打開一個新選項卡,但我看到一個巨大的 json 對象的文本,它以 FileContents 屬性開頭,該值是一個巨大的字符串,我想它是 pdf 文檔的字節。 它看起來像這樣:

{"FileContents":"JVBERi0xLjUNJeLjz9MNCjI1IDAgb2JqDTw8L0xpbmVhcml6ZWQgMS9MIDg1NzU1L08gMjcvRSA3MzgzMy9OIDQvVCA4NTQxNS9IIFsgNDc5IDIyMl0+Pg1lbmRvYmoNICAgICAgICAgICAgICAgICAgDQozOCAwIG9iag08PC9EZWNvZGVQYXJtczw8L0NvbHVtb...it keeps going..", "FileDownloadName":"MyBigFile.pdf"}

如何讓它顯示實際的 pdf 文檔,而不是我的 FileContentResult 的這個大 JSON object? 我最終需要顯示多種文件類型,但我只是從 pdf 開始。

我稍微更改了我的 C# 代碼以返回一個 object,它有一個名為 Bytes 的字節數組 byte[] 和一個文件名。 在我在 angular 代碼中執行此操作之前,我仍然遇到問題:

this.http.get(myUrl).subscribe(response => {
   var byteCharacters = atob(response.Bytes);
   var byteNumbers = new Array(byteCharacters.length);
   for (var i = 0; i < byteCharacters.length; i++) {
      byteNumbers[i] = byteCharacters.charCodeAt(i);
   }
   var byteArray = new Uint8Array(byteNumbers);
   var blob = new Blob([byteArray], {type: "application/pdf"});
   var fileURL = URL.createObjectURL(blob);
   window.open(fileURL, '_blank');
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM