0

これは以前の質問 re ( DOMPDF ) と似ていますが、違いは、PDF を作成するために PHPExcel を使用していることです。

file_put メソッドを試しましたが、空の PDF がダウンロードされます。どこで間違っているのでしょうか、それともできませんか?

以下は、フィールドと私が試したことを出力する私のエンドコードです

  header('Content-Type: application/pdf');
  header('Content-Disposition: attachment;filename="TestSheet.pdf"');
  header('Cache-Control: max-age=0');

  $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'PDF');
  $objWriter->save('php://output');

  $file_location = $save_Path;
  file_put_contents($file_location,$objWriter);
  exit;

保存するとデータが消去されるため、空白のPDFが表示されるようです

ありがとう

4

1 に答える 1

3

ヘッダーを破棄します....それらはすべて、WebブラウザーにPDFファイルを期待するように指示することですが、ブラウザーに何も送信していません(PDFファイルは言うまでもありません)。

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'PDF');
$objWriter->save('php://output');

生成された PDF を Web ブラウザーに直接送信するように PHPExcel に指示しています...あなたはそれをしたくないが、代わりにリモート サーバーに保存すると言います。

$objWriter->save() からの結果をインターセプトする必要があるため、ブラウザーに送信されません。出力バッファリングを使用してキャプチャします。

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'PDF');
ob_start();
$objWriter->save('php://output');
$myPdfData = ob_get_contents();
ob_end_clean();

次に、$myPdfData で PDF データストリームをキャプチャしたら、次のことができます。

file_put_contents($file_location, $myPdfData);

これはメモリを大量に消費する可能性があることに注意してください

于 2013-02-19T12:01:47.760 に答える