2017-10-09 126 views
0

我試圖從響應中保存PDF文件。這裏是 API documentatinPHP:保存base64編碼的PDF文件

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文件的響應。

這裏有什麼問題?

UPDATE:Respose在附加的圖像正確的數據顯示,當你表現出瀏覽器的PDF文件,在文件中不存儲

enter image description here

回答

0

這個頭只需要。

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

刪除它。

+0

已刪除,但我仍然收到空的PDF無法打開。 – Shahzeb

+0

通過步驟調試所有東西。你從'curl_exec($ ch)',下一個'json_decode(curl_exec($ ch))'下一個'$ response-> labelData'下一個'base64_decode($ response-> labelData)''得到了正確的值。你可以在瀏覽器中顯示PDF文件嗎? –

+0

是的,結果是正確的,如附圖所示(我已更新問題)。它也無法在瀏覽器 – Shahzeb

0

很難找到沒有關於來自API的數據信息的問題。 執行代碼:

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

和後期結果在這裏,所以我們可以嘗試找出什麼是錯的。

+0

中打開輸出 - > labelData顯示在附加的快照中,並且按照文檔,它是編碼的pdf。 – Shahzeb