Вывести стандартный Base64 кодированный поток в формат PDF (PHP)

Я использую Royal Mail Shipping API для создания печатных меток PDF, мой PHP SoapClient возвращает действительный ответ, показанный ниже (только показан исходный ответ, поскольку весь ответ огромен).

%PDF-1.7 %äãÏÒ 4 0 obj <> stream xœ endstream endobj 3 0 obj 8 endobj 9 0 obj <> stream xÚí]bì*¤Höýoübƒ¤Æ-q²É>ø%Íë‚ÔFÒ<1ÆoÌúÝú¯ý?1Æ%Èa9Ò4QÌ!}üŠ ÆãS€ZÿŸ2Mô¨H}üßÇcŒ˜Z´½\¡´üý'y©1Æø$¨RÓd°úø'ÆÄŒ1Ægð´ ¨Š'ª°Z¾MCF1Æ}¥/¨{d˜ZQ•†Þ7Æ_P¢õ' kjŒ1.J¦ê”ÕÑŽ©,ž‹1ÆãNÿÅIü{}L%üÄcŒÑS Þª€êÁI”ÀÅÃcŒcHÚsïuP5Ð4Æ .ê2¤mbŒ1vU¼vè:ž>Æ<´¾1ÆØTŠûfÓ¢œÆcTŒ³wGF1Æ 

Может ли кто-нибудь предложить лучший способ «конвертировать» эту кодировку PDF с кодировкой Base64 правильно, чтобы я мог физически загрузить ее в браузер. Мой код ниже загружает PDF-файл, но когда я пытаюсь открыть это, размер файла всегда равен 57kb, и я возвращаю следующее сообщение в Acrobat Reader

 "There was an error opening this document. The file is damaged and could not be repaired." 

Мой код выглядит следующим образом:

 $rm = new RoyalMailLabelRequest(); // provide shipment number, order tracking id, output format (eg PDF/PNG) $response = $rm->PrintLabel('TTT000358756GB', '276831601444829801', 'PDF'); header('Content-type: application/pdf'); header('Content-Disposition: attachment; filename="doc-'.$document.'.pdf"'); $data = base64_decode($response); file_put_contents('pdf/label.pdf', $data); 

ОБНОВИТЬ

Когда я пытаюсь повторить декодированный ответ, я получаю следующее … не уверен, что происходит с этим … странным.

 $response = $rm->PrintLabel('TTT000358756GB', '276831601444829801', 'PDF'); $data = base64_decode($response); echo $data;exit; 

Ответ Echo'd $ данных после base64_decoded

 <1uï(n?Ëzx-‡}üX¥µêÿVx7œ¡×¬¶·š› 

Я также добавил полный ответ base64_encode, который возвращается моим кодом здесь, на pastebin, если он кому-то помогает http://pastebin.com/JEtmRURK

Сортированный – был очень длинный день.

В конце концов, мне не нужно было декодировать ответ, поэтому следующее будет работать (надеюсь, это поможет кому-то, кто выполняет интеграцию с API)

 function PrintLabelRequest($shipmentNumber, $transactionId) { $rm = new RoyalMailLabelRequest(); // function from library returns a response using SOAP $response = $rm->PrintLabel($shipmentNumber, $transactionId); // name the file & saved this label as a PDF in the following folder $filename = 'printedlabel-' . $shipmentNumber; file_put_contents(dirname(__FILE__) . '/labels/'. $filename .'.pdf', $response); }