web-dev-qa-db-ja.com

angularjsでpdfストリームを読む方法

サーバーから次のPDFストリームを取得しました: PDF STREAM

このストリームをAngularJSでどのように読み取ることができますか?次のコードを使用して、新しいウィンドウでPDFファイルとしてこれを開こうとしました:

.success(function(data) {
   window.open("data:application/pdf," + escape(data));
 });

しかし、開いているウィンドウにコンテンツが表示されません。

30
User4567

コントローラーコードを変更することでこれを達成しました

$http.get('/retrievePDFFiles', {responseType: 'arraybuffer'})
       .success(function (data) {
           var file = new Blob([data], {type: 'application/pdf'});
           var fileURL = URL.createObjectURL(file);
           window.open(fileURL);
    });
49
User4567

Pleasは次のコードを確認します。

コントローラー側-

$http.get(baseUrl + apiUrl, { responseType: 'arraybuffer' })
          .success(function (response) {                  
             var file = new Blob([response], { type: 'application/pdf' });
             var fileURL = URL.createObjectURL(file);
             $scope.pdfContent = $sce.trustAsResourceUrl(fileURL);
           })
           .error(function () {                        
           });

HTML側:

<div ng-controller="PDFController" class="modal fade" id="pdfModal" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog modal-lg">
    <div class="modal-content" onloadstart="">
        <object data="{{pdfContent}}"  type="application/pdf" style="width:100%; height:1000px" />
    </div>
</div>

また、Angular ng-pdfviewerを使用して、jsファイルを使用してPDFを表示できます。

7
Gurupreet

Java:Getメソッド

BLOB pdfData = getBlob_Data;
response.setContentType(pdfData.getContentType());
response.setHeader(ApplicationLiterals.HEADER_KEY_CONTENT, "attachment;     filename=FileName.pdf");
response.getOutputStream().write(pdfData.getBinaryData());
response.getOutputStream().flush();
1
Vinay Adki

PDF.JS をご覧ください。これは、pdfストリームを取得してクライアント側にレンダリングできるクライアント側javascriptライブラリです。 AngularはPDFを読み込めないため、これはangularの問題ではありません。

1
Lee Willis

Config.responseTypeの使用に関する問題は、$ httpサービスが引き続きデフォルトのresponseTransformerを実行し、応答をJSONに変換しようとすることです。また、デフォルトの受け入れヘッダーを送信しています。 (未テストの)代替案は次のとおりです。

$http.get('/retrievePDFFiles', {
    headers: { Accept: "application/pdf"},  
    transformResponse: function(data) {
        return new Blob([data], {type: 'application/pdf'});
    }}).success(function (data) {
           var fileURL = URL.createObjectURL(data);
           window.open(fileURL);
    });
1
Ed Greaves