Попробуйте это:
- удалить '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);
, так что вы можете решить, какой путь вы предпочитаете.