如何返回pdf对象而不是使用fpdf保存

时间:2014-10-14 13:32:54

标签: php pdf fpdf

我需要创建一个pdf文件并使用POST请求发送到服务器。 为了创建pdf,代码非常简单

require('fpdf.php');
$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10,'Hello World!');
$pdf->Output("mypdf.pdf");

对于POSTing,我通过

阅读pdf文件
$file_contents = file_get_contents("mypdf.pdf");

有没有办法让我不必首先写入文件然后从中回读? 一些做法

$file_contents = $pdf->Output();

2 个答案:

答案 0 :(得分:7)

如果我正确地得到了问题,你想要数据流吗?

如果是,Output()需要2个参数,name and destination。将S作为目标参数发送将返回string的pdf数据。

所以,保留你的代码

require('fpdf.php');
$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10,'Hello World!');
$file_contents = $pdf->Output("mypdf.pdf","S");

source

答案 1 :(得分:2)

每个fdf Output()文档:

Output([string name, string dest])

名称

  

文件的名称。如果未指定,则文档将以名称doc.pdf发送到浏览器(目标I)。

DEST

  

目的地发送文件的位置。它可以采用以下值之一:

     
      
  • I:将文件内联发送到浏览器。如果可用,则使用插件。当选择"另存为"时,使用名称给出的名称。生成PDF的链接上的选项。
  •   
  • D:发送到浏览器并使用名称给出的名称强制下载文件。
  •   
  • F:保存到名称给出的名称的本地文件(可能包含路径)。
  •   
  • S:将文档作为字符串返回。名称被忽略。
  •   

因此,如果要将文件内容传递给变量,请使用:

$pdf_file_contents = $pdf->Output("","S");