0

这与我之前的问题(DOMPDF)类似,不同之处在于现在我使用 PHPExcel 来创建 PDF。

我尝试了 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');

正在告诉 PHPExcel 将生成的 PDF 直接发送到 Web 浏览器....您说您不想这样做,而是要保存到远程服务器。

您需要拦截来自 $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 回答