1

html2fpdfでpdfファイルを生成しています。

$pdf = new HTML2FPDF();
$pdf->HTML2FPDF("P","mm","A4");
$pdf->AddPage();
$pdf->WriteHTML($html);
$pdf->output('sample.pdf');

このサンプルはうまく機能します。しかし:

出力後にpdfを削除するにはどうすればよいですか? ツールにリンクを設定したいだけです。ユーザーはpdfをダウンロードでき、その後サーバー上で削除する必要があります。

PDFを生成した後に「クリーンアップ」するにはどうすればよいですか?

4

2 に答える 2

3

と呼ばれるPHPのファイル削除機能を使用できますunlink()

生成された PDF ファイル (またはその他のファイル) へのフル パスを指定してこの関数を呼び出すと、PHP によってそのファイルが削除されます。

http://php.net/manual/en/function.unlink.php


ユーザーがファイルをダウンロードした直後に、必ずしもファイルを削除する必要はありません。生成されたすべてのファイルを 1 つの中央フォルダーに簡単に配置し、古いファイルを単純に削除する、より一般的なクリーンアップ スクリプトを cron ジョブで実行させることができます。

1つの方法は-

  • を使用してフォルダの内容をスキャンしますscandir()
  • foreachループ内のファイルを反復処理します..
  • を使用して、各ファイルの作成時間を調べますfilemtime()
  • 作成時間が 1 時間以上前の場合は、 を使用してファイルを削除しますunlink()

PHP コード内で PDF ファイルを自分で生成しているため権限に関する考慮事項については言及しませんでした。ここで、ファイル システムで何らかのアクションを実行するには、PHP に適切なファイル システムのアクセス許可が必要であることに言及することをお勧めします。PDF ファイルを作成しているので、ファイル システムに変更を加えるための正しいアクセス許可があると想定しても問題ありませんが、unlink()他のスクリプトでこの関数を使用する予定がある場合は、処理しているファイルに正しいアクセス許可が設定されていることを確認してください。

于 2012-07-08T18:09:16.573 に答える
2

出力関数に「F」フラグを追加しない場合、サーバーにPDFファイルはまったく保存されません。

$pdf->output('sample.pdf', 'F'); //stores PDF on server

あなたの場合、スクリプト自体は実際のpdfファイルのように動作します。したがって、スクリプトへのリンクを作成することは、スクリプトが要求されるたびにPDFが作成されることを除いて、PDFへのリンクと同じです。ブラウザにPDFであることを伝えるには、content-type応答ヘッダーを次のように設定する必要がありますapplication/pdf

content-type: application/pdf

このようにして、URLがで終わっている場合でも、ブロザーはそれがpdfであることを認識します.php。書き換えエンジンを使用して、PDFなどで終了させることができます。

ヘッダーの送信はfpdf/tcpdfによって行われます。つまり、サーバーにPDFファイルが保存されていないため、クリーンアップを行う必要はありません。

名前の意味がわからない場合は、PDFファイルを保存してみてください。保存時に推奨される名前はsample.pdfになります。

参照

于 2012-07-09T00:17:52.967 に答える