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


How to return a pdf object instead of saving using 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");

为了张贴,我阅读了的pdf文件

$file_contents = file_get_contents("mypdf.pdf");

有没有一种方法可以让我不必先写入文件,然后再从中读取?的一些方法

$file_contents = $pdf->Output();

如果我答对了问题,你想要数据流吗?

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

所以,保留你的代码

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");

根据fdf Output()文档:

Output([string name, string dest])

名称

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

dest

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

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

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

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