2012-02-15 25 views
4

私は生のバイナリデータからPDFファイルを作成していますが、完璧に動作しますが、PHPファイルで定義したヘッダのために、ファイルを "保存"するか、 。ここでどこかのローカルサーバーにファイルを保存する方法はありますかhttp://localhost/pdfpdfをローカルサーバに保存

以下は、ヘッダを必要としません、あなたは、サーバー上のファイルを保存するのではなく、訪問者がそれをダウンロードしてもらいたい場合は、私は私のページ

header("Pragma: public"); 
header("Expires: 0"); 
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Cache-Control: public"); 
header("Content-Description: File Transfer"); 
header("Content-Type: application/pdf"); 
header("Content-Disposition: attachment; filename=$filename"); 
header("Content-Transfer-Encoding: binary"); 

答えて

7

で定義したヘッダです。ヘッダーは、クライアントに何を送信しているかを伝えるためのもので、この場合は何もありません(新しく作成したPDFなどにリンクしているページを表示している可能性があります)。

代わりに、file_put_contentsなどの関数を使用してファイルをローカルに保存するだけで、WebサーバーがハンドヘルドHTTPヘッダーを転送するようにすることができます。

+0

ここで、関数generate_pdf()? –

+0

@skjulikaka:質問はPHPを使ってPDFデータを作成することではなく、範囲外のデータを保存する方法です。私のコード例の最初の行には、「***あなたはPDF *を作成する関数generate_pdf()があります」と明示的に述べています。しかし、私はあなたが[検索する](http://stackoverflow.com/search?q=generate+%5Bpdf%5D+using+%5Bphp%5D)で適切な答えを見つけることができると確信しています "[tag:pdf]を使用して[タグ:php] "またはそれらの行に沿ったもの。 – Simon

+0

はい私は 'pdfにphpコンテンツを生成するために多くのライブラリを満たしていますが、私の言語がpdfで理解できないのでまだ受け入れられません:(、私は今狂っています;) –

0

出力制御機能を使用できます。スクリプトの先頭にob_start()を配置します。最後に、ob_get_contents()を使用して、コンテンツをローカル・ファイルに保存します。

その後、PDFをブラウザに出力するかどうかに応じてob_end_clean()またはob_end_flush()を使用するか、別のページにリダイレクトします。 ob_end_flush()を使用する場合は、データをフラッシュする前にヘッダーを設定してください。

+0

PDFデータをメモリに持っているなら、出力バッファリングは、ファイルをもう一度スキャンするような印字のようなものではありませんか?ユーザーにダウンロードさせるのと同時にディスクに保存したい場合でも、保存することはできません。 PDFファイルを出力するにはどうすればいいですか? – Simon

+0

PDFファイルの作成に使用しているライブラリによっては、ブラウザに直接出力できるライブラリがあるため、保存できません。 –

+0

。 それは理にかなっている。 – Simon

関連する問題