2016-07-04 23 views
0

私はbarryvdh/laravel-snappyでLaravel/Jqueryを使用して、データベースデータからオンザフライでpdfを作成しています。私が持っているコントローラでLaravel snappy pushing PDFダウンロード

:それはダウンロードすることができますので、

if ($request->ajax()) 
{ 
    $document = Document::url($id)->first(); 
    $pdf = PDF::loadView('app.documents.whitepapers.pdf', compact('document')); 
    return $pdf->download('filename.pdf'); 
    // return response()->send($pdf->download('filename.pdf'), 200, $headers); 
} 

がどのように私はブラウザにこのPDFをプッシュすることができますか?

私がJqueryなしで行うと、完全に動作しています。それがJquery関数の背後にある理由は、ダウンロードを開始する前に人のデータを収集するためのフォームを持つModalを使用するためです。これにはajaxのバリデーションがあります。

+0

をステップを介してユーザのID(または識別情報の別の部分)が含まれていることを確認してください、あなたが投稿したコードを使用しているとき? –

+0

javascriptコンソールのPDFのバイナリデータが表示されていますが、結果をプッシュするのに十分だと思いますが、そうではありません。私は結果をプッシュするために私のjQuery ajax 'success'で何かをしなければならないのですか? – klaaz

+0

あなたに欠けているリンクを解決するはずの[回答はこちら](http://stackoverflow.com/a/27563953/1206267)です。 – Ohgodwhy

答えて

1

ファイルをJavaScript経由で通常のダウンロードとして提出することはできません。ユーザーにダウンロードのプロンプトを表示するには、ワークフローに特別なステップが必要です。

は、私は次のワークフローをお勧めします:

  1. ユーザーは
  2. フォームはAJAXを経由して検証されるモーダルフォームを送信します。検証が合格した場合は、PDF自体ではなく、ユーザーのPDFをダウンロードするURLで応答します。
  3. JavaScriptがユーザーをこのURLにリダイレクトします。これは別のAJAXリクエストではなくリダイレ​​クトであることに注意してください(top.location.hrefを参照)
  4. ユーザーがそのURLにアクセスすると、元の質問で提供したコードスニペットを使用してPDFを配信できます。このスニペットでは、応答のcontent-dispositionが適切に設定され、ダウンロードプロンプトが強制的にユーザーのブラウザに表示されます。

あなたはユーザーごとにPDF生成をカスタマイズする必要がある場合、あなたは、現時点では見ているどのような行動4.

関連する問題