PHP Excel:将创建的PDF保存到远程服务器,而不是用户下载


PHP Excel: Saving created PDF to remote server and not user downlaod

这与我之前的问题re(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

感谢

丢弃标题。。。。它们都是告诉网络浏览器需要一个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);

请注意,这可能是内存不足的