2011-08-30 8 views
5

私はEndicia出荷ラベルサーバーを試しています。以下のサンプルコードでは、テストサーバーからUSPSラベルを取得できます。返されるイメージをどのように表示しますか?現在、print_r関数(コメントアウトされていない場合)は、イメージとして表示されている配列の内容を出力します。PHPで変数からgifを印刷

<?php 

$strGetLabelURL = "https://www.envmgr.com/LabelService/EwsLabelService.asmx/GetPostageLabelXML"; 

$request = '<LabelRequest ImageFormat="GIF" Test="YES"> 
    <RequesterID>abcd</RequesterID> 
    <AccountID>123456</AccountID> 
    <PassPhrase>samplePassPhrase</PassPhrase> 
    <MailClass>FIRST</MailClass> 
    <DateAdvance>0</DateAdvance> 
    <WeightOz>1</WeightOz> 
    <Stealth>FALSE</Stealth> 
    <Services InsuredMail="OFF" SignatureConfirmation="OFF" /> 
    <Value>0</Value> 
    <Description>Sample Label</Description> 
    <PartnerCustomerID>12345ABCD</PartnerCustomerID> 
    <PartnerTransactionID>6789EFGH</PartnerTransactionID> 
    <ToName>Ben Franklin</ToName> 
    <ToCompany>United States Postal Service</ToCompany> 
    <ToAddress1>12345 Main Street</ToAddress1> 
    <ToCity>Camas</ToCity> 
    <ToState>WA</ToState> 
    <ToPostalCode>98607</ToPostalCode> 
    <ToPhone>2025551212</ToPhone> 
    <FromName>Technical Support</FromName> 
    <FromCompany>DYMO Endicia</FromCompany> 
    <ReturnAddress1>385 Sherman Ave.</ReturnAddress1> 
    <FromCity>Palo Alto</FromCity> 
    <FromState>CA</FromState> 
    <FromPostalCode>94306</FromPostalCode> 
    <FromZIP4>1864</FromZIP4> 
    <FromPhone>8005763279</FromPhone> 
    </LabelRequest>'; 

$params = array('http' => array(
    'method' => 'POST', 
    'content' => 'labelRequestXML='.$request, 
    'header' => 'Content-Type: application/x-www-form-urlencoded')); 

$ctx = stream_context_create($params); 
$fp = fopen($strGetLabelURL, 'rb', false, $ctx); 

if (!$fp) 
{ 
    print "Problem with $strGetLabelURL"; 
} 

$response = stream_get_contents($fp); 

if ($response === false) 
{ 
    print "Problem reading data from $url, $php_errormsg"; 
} 

print_r($response); 
?> 
+0

$ responseの内容は何ですか? – xdazz

+0

イメージのBLOBは配列要素ですか? – alex

答えて

7

あなたは、XMLをロードした画像データを抽出し、それを配置する必要があります画像:

$sxml = Simplexml_load_string($response); 
echo '<img src="data:image/gif;base64,' . $sxml->Base64LabelImage . '">'; 
+2

素晴らしい...ありがとう。私は警告を抑制する特別なオプションを追加しました... Simplexml_load_string($ response、NULL、LIBXML_NOWARNING);それは素晴らしい作品です。ありがとう。 – RThomas

2

私はEndiciaソリューションについてよくわかりませんが、私はUPSと非常に似ていると思います。 送信したXMLから、GIF形式のラベルを尋ねることができます。 私は、応答であなたは<LabelImage>または何か類似の名前の要素があると思います。あなたは開閉タグの間にある値を抽出して、ブラウザ上でそれを印刷するには、以下を使用する必要があります。

echo '<img src="data:image/gif;base64,' . $value . '" alt="" />';