首页 > 解决方案 > 如何从解码的base64字符串中获取pdf

问题描述

我如何从这个数组中下载 pdf,这是我当前代码的样子,我无法保存 pdf。谢谢你的帮助。这是我当前的代码:

$result = $SoapClient4->getContractBill($contractId, 2019, '09');
    var_dump($result);
    #$base64data = preg_replace('#data:application/pdf/[^;]+;base64,#', '', $result['ContractBills'][0]['RawFileData']);
    $decoded = base64_decode($base64);
    $file = 'invoice.pdf';
    $file_put_contents($file, $decoded);

    $pdf_decoded = base64_decode($base64data);
    $pdf = fopen('test.pdf','w');
    fwrite($pdf,$pdf_decoded);
    fclose($pdf);

标签: phpbase64encode

解决方案


尝试这个:

  • 删除“base64”(7 个字符)
  • 解码字符串
  • 写入文件
file_put_contents('test.pdf', base64_decode(substr($result['ContractBills'][0]->rawFileData, 7)));

请注意键的大小写正确,因为它们区分大小写。'RawFileData' !== 'rawFileData'.

在您的评论问题后编辑:

您可以将您的代码替换为

$result = $SoapClient4->getContractBill($contractId, 2019, '09');
file_put_contents('invoice.pdf', base64_decode(substr($result['ContractBills'][0]->rawFileData, 7)));

就这些。确保您以正确的路径编写 invoice.pdf。

单线的作用与以下相同:

$result = $SoapClient4->getContractBill($contractId, 2019, '09');
$file = 'invoice.pdf';
$base64raw = $result['ContractBills'][0]->rawFileData;
$base64 = substr($base64raw, 7);
$decoded = base64_decode($base64);
file_put_contents($file, $decoded);

所以你可以决定你喜欢哪种方式。


推荐阅读