Как получить PDF из декодированной строки base64 - PullRequest
2 голосов
/ 20 сентября 2019

как я могу скачать 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 Ответ

2 голосов
/ 20 сентября 2019

Попробуйте это:

  • удалить '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);

, так что вы можете решить, какой путь вы предпочитаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...