如何从解码的base64字符串中获取pdf

时间:2019-09-20 06:42:42

标签: php base64 encode

我如何从该数组下载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);

1 个答案:

答案 0 :(得分:2)

尝试一下:

  • 删除“ 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);

因此您可以决定喜欢哪种方式。