从 TCPDF 中的 base64 字符串中删除 'E' 输出 headers

Remove 'E' output headers from base64 string in TCPDF

我正在使用 TCPDF

$base64String = $pdf->Output('file.pdf', 'E');

所以我可以通过AJAX

发送数据

唯一的问题是除了Base64字符串

之外,它还带有header信息
Content-Type: application/pdf;
 name="FILE-31154d59f28c63efae86e4f3d6a00e13.pdf"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename="FILE-31154d59f28c63efae86e4f3d6a00e13.pdf"

因此,如果我将创建的字符串用于 base64_decode() 或在我的情况下与 phpMailer 一起使用,则会出错。是否可以删除 headers 以便我只有 base64 字符串?

(错误是打开任何PDF都无法读取pdf reader)

我以为我能找到解决这个问题的方法,但我什么也没找到!!

更新

这就是我为解决问题而采取的措施

$base64String = preg_replace('/Content-[\s\S]+?;/', '', $base64String);
$base64String = preg_replace('/name=[\s\S]+?pdf"/', '', $base64String);
$base64String = preg_replace('/filename=[\s\S]+?"/', '', $base64String);

不过不是很优雅!因此,如果有人有更好的解决方案,请在下面 post :)

TCPDF 文档很大但无法使用 – read the source code directly 更容易。它有那些额外的 headers ,因为您通过使用 E 输出模式请求它们,该模式用于生成电子邮件。

为了将 PDF 数据作为 PHPMailer 附件发送,您需要直接将二进制 PDF 数据作为字符串,由 S 输出模式提供,您可以直接将其传递给 addStringAttachment(), PHPMailer 将为您处理所有编码。您所要做的就是:

$mail->addStringAttachment($pdf->Output('file.pdf', 'S'), 'file.pdf');

要将 PDF 二进制文件转换为 base64,例如在 JSON 字符串中将其转换为 base64,只需将其传递给 base64_encode:

$base64String = base64_encode($pdf->Output('file.pdf', 'S'));