PHP:保存base64编码的PDF文件

时间:2017-10-09 07:34:40

标签: php base64

我正在尝试从响应中保存pdf文件。这里是  API documentatin

Creates a shipping label for a given order. The labelData field returned in the response is a base64 encoded PDF value. Simply decode and save the output as a PDF file to retrieve a printable label

这是我保存pdf文件的代码。

        $response = json_decode(curl_exec($ch));
        $data = base64_decode($response->labelData);
        header('Content-Type: application/pdf');
        //echo $data;
        $path = 'E:/newly_created_file'.time().'.pdf';
        file_put_contents($path,$data);

当我在浏览器中echo $data时,它会显示响应,如

%PDF-1.4 %���� 2 0 obj <>stream x�+�r �26S0�4SI�r � �*T0T0BC]#=]ccC=#��\��4C�|�@.GF� endstream endobj 4 0 obj <>>>/Contents 2 0 R/Parent

当我保存数据时,它会生成一个无法打开的空pdf文件。

这里有什么问题?

更新:Respose具有附加图像中显示的正确数据

enter image description here

2 个答案:

答案 0 :(得分:0)

只有在浏览器中显示pdf文件时才需要此标题,而不是存储在文件中。

header('Content-Type: application/pdf');

删除它。

答案 1 :(得分:0)

很难找到有关API数据信息的问题。 执行代码:

$response = json_decode(curl_exec($ch));
echo $response->labelData;
exit;

并在此处发布结果,因此我们可以尝试找出问题所在。