2011-08-30 26 views
5

Estoy experimentando con el servidor de etiquetas de envío de Endicia. El siguiente código de muestra me permite obtener una etiqueta de USPS de su servidor de prueba. ¿Cómo mostraría la imagen que se está devolviendo? En este momento, la función print_r (si no está comentada) imprime los contenidos de la matriz de lo que parece ser una imagen.Imprimir un gif desde una variable con php

<?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

¿Cuál es el contenido de $ respuesta? – xdazz

+0

¿El blob de la imagen es un elemento de matriz? – alex

Respuesta

7

usted tiene que cargar el XML, extraer los datos de la imagen, a continuación, poner en una imagen:

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

Impresionante ... gracias. Agregué opciones adicionales para suprimir advertencias ... Simplexml_load_string ($ response, NULL, LIBXML_NOWARNING); y funciona genial Gracias. – RThomas

2

No sé sobre la solución de Endicia pero creo que es bastante similar a UPS. Desde el XML que envía puede ver que solicita la etiqueta en formato GIF. Supongo que en la respuesta tiene un elemento llamado <LabelImage> o algo similar. Hay que extraer el valor que está entre la apertura y la etiqueta de cierre y utilizar a continuación para imprimir en su navegador:

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

Cuestiones relacionadas