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

时间:2013-02-19 11:54:18

标签: php phpexcel

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

我尝试过file_put方法,但下载了一个空PDF。那我哪里出错了,还是不能这样做?

下面是我的结束代码输出fiel和我试过的

  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

由于

1 个答案:

答案 0 :(得分:3)

丢弃标题....它们都是关于告诉网络浏览器期望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);

请注意,这可能是需要大量内存的