从 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'));
我正在使用 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'));