是否可以使用 PHP 将原始 gmail PDF 附件转换为 PDF 文件?

问题描述 投票:0回答:1

使用 file_get_contents('php://input'); 在 PHP 中解析电子邮件。这些电子邮件均来自 Gmail,并且均包含一个 PDF 附件。解析将电子邮件附件转换为编码格式(可能是 base64)。我想将其转回 PDF 文件,但我什至不确定哪些数据是 PDF 的一部分,哪些只是 gmail 格式。

    X-Attachment-Id: f_jwqkv3w50

    JVBERi0xLjcNJeLjz9MNCjEwNDQgMCBvYaXplZCAxL0wgMTE1MTA5L08gMTA0
    OS9FIDM2OTA3L04gNC9UIDExNIDMxMF0+Pg1lbmRvYmoNICAgICAgICAgICAg
                         ... lots of data ...
    YmQ8uJSBifG/8ykGzdwxMDAyMmmCyjgEACm0LAwplbmRzdHJlYW0KZW5kb2Jq
    CnN0YXJ0eHJlZgoxMjYyMTMKJSVFT0YK
    --00000000000044d68b058afa7da0--

--00000000000044d68b058afa7da0-- 是 PDF 的一部分还是页眉部分的页脚?如果可以转换这些数据,关于最好的方法有什么建议吗?

php pdf email-attachments
1个回答
0
投票

您必须解析原始电子邮件内容才能从文本中提取 PDF 片段。 解析部分取决于发送电子邮件的电子邮件客户端。 --00000000000044d68b058afa7da0-- - 这是边界字符串,它不是 PDF 的一部分。 然后清除PDF字符串您可以在base64解码后保存到文件。 对于 gmail pdf 附件,整个功能可以如下所示:

        $start = 'Content-Type: application/pdf';
        $pdfContent = mb_substr($messageRawContent, mb_strpos($messageRawContent, $start));
        //remove header lines
        $_pdfContent = mb_substr($pdfContent, strpos($pdfContent, "\n") + 1);
        $__pdfContent = mb_substr($_pdfContent, strpos($_pdfContent, "\n") + 1);
        $___pdfContent = mb_substr($__pdfContent, strpos($__pdfContent, "\n") + 1);
        $____pdfContent = mb_substr($___pdfContent, strpos($___pdfContent, "\n") + 1);
        $_____pdfContent = mb_substr($____pdfContent, strpos($____pdfContent, "\n") + 1);
        //remove boudary string
        $pdf = substr($_____pdfContent, 0, mb_strpos($_____pdfContent, "=="));
        $pdfDecoded = base64_decode($pdf);
        $pdfFilePath = 'path_to_file/file.pdf';
        file_put_contents($pdfFilePath, $pdfDecoded);
© www.soinside.com 2019 - 2024. All rights reserved.