2017-05-26 13 views
1

ここに私の状況ですが、私はいくつかのパラメータでリクエストをすると、PDFジェネレータを実行しているサーバを持っています。実行時に生成されるサーバー。chrome PDFビューアでファイルをダウンロードできません

すべてがうまくいって、私はクロムのPDFビューアでPDFを開くことができますが、ファイルをダウンロードしたい場合は、画像のようにエラーが発生しました。 enter image description here

Chromeは、ファイルを要求するために、元のURLにアクセスしてくださいますが、ファイルはサーバー上の静的リソースではありませんので。

誰かがこの問題に遭遇したことがありますか?

+0

私たちは同じ問題を抱えています...解決策はまだありません。 – flob

+0

https://stackoverflow.com/a/21732039/510711で提案されているソリューションを試しましたか? – flob

+0

@flob私はこれをGoogleのchromeのグループに掲載しました.PDFのオリジナルURLからダウンロードするPDFは、Chromeに組み込まれたPDFビューアのデフォルト動作です。今私たちのソリューションは、私たちのサーバーに組み込まれているデフォルトのPDFビューアとして 'PDF.js'を使用することです。詳細については、 'PDF.js' githubページを確認してください。 –

答えて

0

がするたびに、あなたは非常に収集ゴミを取得するオブジェクトのオブジェクトのURL(window.URL.createObjectURL(...))を作成するために使用されるウェブサイトをまま

はこちらのリンクを参照してください。だから、何とかそのオブジェクトへの参照を保持する必要があります。

これは最初の対応のブラウザで新しいタブをPDFを表示し、(IEでそれだけでダウンロードを開始します)後でダウンロードを許可するようにクロムは、Firefox、Safariの、iOSのSafariの& Androidの中で私たちのために動作します。

function openPdfInNewTab(url, 
         postData, 
         description = 'Document', 
         filename = description + '.pdf') { 
    if (!window.navigator.msSaveOrOpenBlob) { 
    var tabWindow = window.open('', '_blank'); 
    var a = tabWindow.document.createElement('a'); 
    a.textContent = 'Loading ' + description + '..'; 
    tabWindow.document.body.appendChild(a); 
    tabWindow.document.body.style.cursor = 'wait'; 
    } else { 
    spinnerService.show('html5spinner'); 
    } 

    $http.post(url, postData, {responseType: 'arraybuffer'}) 
    .then(function showDocument(response) { 
     var file = new Blob([response.data], {type: 'application/pdf'}); 
     if (window.navigator.msSaveOrOpenBlob) { 
     spinnerService.hide('html5spinner'); 
     window.navigator.msSaveOrOpenBlob(file, filename); 
     } else { 
     tabWindow.document.body.style.cursor = 'auto'; 
     var url = a.href = window.URL.createObjectURL(file); 
     a.click(); 
     a.download = filename; 
     } 
     $timeout(function revokeUrl() { 
     window.URL.revokeObjectURL(url); 
     }, 3600000); 
    }, handleDownloadError); 
} 

私たちは新しいブラウザタブでPDFを開いており、同様の問題がありました。

PDFを表示してもダウンロードを許可しなかったtabWindow.URL.createObjectの代わりにwindow.URL.createObjectURLを使用すると、私たちは再び作業を開始しました。

2

ChromeのPDFビューアが組み込まれていると、PDFのオリジナルURLからPDFファイルがダウンロードされます。 PDFがサーバーランタイムで生成され、サーバーに保存されていない場合は、ダウンロードが失敗する可能性があります。 https://productforums.google.com/forum/#!topic/chrome/YxyVToLN8ho

関連する問題