2011-01-26 15 views
1

私はリンクをクリックするとpdfをダウンロードしようとしています。JSとPHPを使って "Hello world"をダウンロードしようとしています

これらは私のコードです:

function issue_bill(order_id){ 
$.post('orders/issueBilll?id_order='+order_id, 
     order_id, 
     function() 
     { 
      $('example').replaceWith('Bill issued'); 
     } 
    ); 
} 


public function executeIssueBill(sfWebRequest $request) 
{ 
    $pdf=new FPDF(); 
    $pdf->AddPage(); 
    $pdf->SetFont('Arial','B',16); 
    $pdf->Cell(40,10,'Hello World!'); 
    $pdf->Output(); 
} 

私はリンクをクリックすると、それはPDF文書をダウンロードしません。私はFirebugののインスペクタを行く場合、私は、コンソールの「応答」セクションの下にこれを取得する:

%PDF-1.3 
3 0 obj 
<</Type /Page 
/Parent 1 0 R 
/Resources 2 0 R 
/Contents 4 0 R>> 
endobj 
4 0 obj 
<</Filter /FlateDecode /Length 72>> 
stream 
x�3R��2�35W(�r 
Q�w3T04�30PISp 
    �Z*�[����(hx����+���(j*�d�� 
endstream 
endobj 
1 0 obj 
<</Type /Pages 
/Kids [3 0 R ] 
/Count 1 
/MediaBox [0 0 595.28 841.89] 
>> 
endobj 
5 0 obj 
<</Type /Font 
/BaseFont /Helvetica-Bold 
/Subtype /Type1 
/Encoding /WinAnsiEncoding 
>> 
endobj 
2 0 obj 
<< 
/ProcSet [/PDF /Text /ImageB /ImageC /ImageI] 
/Font << 
/F1 5 0 R 
>> 
/XObject << 
>> 
>> 
endobj 
6 0 obj 
<< 
/Producer (FPDF 1.53) 
/CreationDate (D:20110126103602) 
>> 
endobj 
7 0 obj 
<< 
/Type /Catalog 
/Pages 1 0 R 
/OpenAction [3 0 R /FitH null] 
/PageLayout /OneColumn 
>> 
endobj 
xref 
0 8 
0000000000 65535 f 
0000000228 00000 n 
0000000416 00000 n 
0000000009 00000 n 
0000000087 00000 n 
0000000315 00000 n 
0000000520 00000 n 
0000000596 00000 n 
trailer 
<< 
/Size 8 
/Root 7 0 R 
/Info 6 0 R 
>> 
startxref 
699 
%%EOF 

私はドキュメントをダウンロードするにはどうすればよいですか?私は直接issueBill()メソッドを呼び出す場合、私はPDFをダウンロードするには問題はありません。

答えて

2

JavaScript変数に応答が格納されているAJAXリクエストを作成したくない場合、通常のHTTPリクエストを作成したい場合 - ユーザーがリンクをクリックするかブラウザのURLを入力したときの種類アドレスバー。

JavaScriptでwindow.locationを使用して、PDF生成ツールのURLにユーザを送信してください。

ブラウザがあなたのページに滞在するのをやめさせようとするなら、あなたのPDFジェネレータのURLを指し示すiframeを作成してリクエストしてください。また、ブラウザにPDFであることを伝えないようにするために、コンテンツタイプヘッダーを見せかける必要があります。そうしないと、ダウンロードを強制する代わりにウィンドウに表示しようとする可能性があります。

+0

これはまったく同じです。 FPDF :: Output()の 'download'オプションを選択した場合、現在のページに残ります。 – Mchl

+0

Danさん、ありがとう、とにかく、なぜAJAXリクエストをしたくないと思いますか?あなたが言っている方法では、私はページをリロードしていますが、ページをリロードしたくないかもしれません。そう... AJAXを使用することは可能でしょうか、それともちょっと役に立たないのですか? – ziiweb

+0

これは不可能ではなく、お勧めではありません。あなたはページを再読み込みしていません。 –

関連する問題