2014-11-21 30 views
6

Sto utilizzando TCPDF per creare file PDF generato dinamicamente. Nel mio file pdf viene generata un'immagine basata sull'input dell'utente e voglio aggiungere quell'immagine sul mio file pdf. Qui è il mio codiceErrore TCPDF: impossibile ottenere la dimensione dell'immagine

$map_image = "example.com/wp-content/themes/example/map_image_leasing.php/?city=Calgary&suit_type=&min_area=&max_area="; 

$pdf->Image ($map_image, 55, 19, '', '', 'JPG', '', 'T', false, 300, '', false, false, 0, false, false, false); 

Se incollo "example.com/wp-content/themes/example/map_image_leasing.php/?city=Calgary & suit_type = & min_area = & max_area =" questo sul mio url questo crea immagine come volevo, ma se metti questo url, non funziona. Dice Impossibile ottenere la dimensione dell'immagine

Ma se ho messo qualcosa di simile

$map_image = '/wp-content/themes/v3/resources/images/public/logo_side.jpg'; 

Può generare il pdf con quell'immagine con successo.

Come posso risolverlo?

Ho visitato il seguente link StackOverflow, ma niente di tutto questo è venuto a qualsiasi aiuto

tcpdf working on localhost but not on my sever giving error TCPDF ERROR: [Image] Unable to get image:

cakephp tcpdf image error [Image] Unable to get image

TCPDF ERROR: [Image] Unable to get image

risposta

10

Questo potrebbe essere dovuto a filesize() non riuscendo a stat() il telecomando file immagine tramite HTTP wrapper (poiché il wrapper non lo supporta).

In base allo TCPDF image() method documentation è possibile passare direttamente i dati dell'immagine anticipandolo con un simbolo @. Così si potrebbe ottenere i dati di immagine grezzi e poi passarlo a TCPDF in questo modo:

$img = file_get_contents('http://example.com/wp-content/themes/example/map_image_leasing.php/?city=Calgary&suit_type=&min_area=&max_area='); 

$pdf->Image('@' . $img, 55, 19, '', '', 'JPG', '', 'T', false, 300, '', false, false, 0, false, false, false); 

Si noti che non ho ancora testato questo (e la documentazione TCPDF è scarsa) quindi potrebbe essere necessario sperimentare un po 'per ottenere per funzionare correttamente.


Edit:

Questo è un esempio completamente funzionante (sul mio PC). Utilizzare questo per verificare se è possibile recuperare l'immagine e inviare il PDF al browser. Ovviamente dovrai impostare un percorso valido noto per l'immagine!

<?php 

require './tcpdf/tcpdf.php'; 

$pdf = new TCPDF(); 

$pdf->AddPage(); 

$img = file_get_contents('http://path/to/your.jpg'); 
$pdf->Image('@' . $img); 

$pdf->Output(); 

?> 
4

Verificare che il server è in grado di utilizzare del file_get_contents o cURL PHP per scaricare il file. "Impossibile ottenere la dimensione dell'immagine" è il primo errore nella funzione Image che TCPDF genererà se il file non è accessibile a entrambe le funzioni sul server.

1

Assicurarsi di utilizzare un percorso relativo, a volte assolutamente percorso non funzionano

ok:" ../../myImage.png "

sbagliato:" http://www.example.com/myImage.png "

+0

La soluzione ha funzionato per me, mi chiedo perché? Ho ricevuto questo errore durante l'esecuzione del test phpunit –

0

ho avuto questo errore sul mio deposito Magento

Se si apre tcpdf.php troverete questo codice, $ file è stato un URL quando dovrebbe essere sporgere la. percorso del file:

// check if is a local file 
if ([email protected]_exists($file)) { 
     // try to encode spaces on filename 
     $tfile = str_replace(' ', '%20', $file); 

per una soluzione rapida ho aggiunto questo codice:

$file = str_replace("http://theurliwantgone/","",$tfile); 

e ha funzionato! Spero che questo aiuti la maggior parte di voi!

2

per eseguire il debug questo problema è possibile eliminare il @ da @getimagesize (file $) in tcpdf.php attorno alla riga 6850. Cerca [Immagine] Impossibile ottenere la dimensione dell'immagine: e scorrere alcune linee su. @ Nasconde il messaggio di errore effettivo.

Se si è in grado di raggiungere l'URL immagine dal browser, è possibile che il proprio sistema non indichi l'url all'host richiesto. Il messaggio correlato è getimagesize(): php_network_getaddresses: getaddrinfo non riuscito:. Ciò significa che la tua configurazione php locale non ha idea di dove cercare l'url. In tal caso è necessario modificare il file/etc/hosts e indirizzare l'installazione locale all'ip. Questo è spesso un problema nelle impostazioni di localhost.

E.g. 127.0.0.1 yoururlhere.local

+0

L'ho provato e ho ricevuto molti avvisi. ma hai ragione posso accedere all'URL dell'immagine dal browser. –

-3

ricerca attorno alla riga 6877 in tcpdf.php

if ($imsize === FALSE) { 
     if (($w > 0) AND ($h > 0)) { 
      // get measures from specified data 
      $pw = $this->getHTMLUnitToUnits($w, 0, $this->pdfunit, true) * $this->imgscale * $this->k; 
      $ph = $this->getHTMLUnitToUnits($h, 0, $this->pdfunit, true) * $this->imgscale * $this->k; 
      $imsize = array($pw, $ph); 
     } else { 
      $this->Error('[Image] Unable to get the size of the image: '.$file); 
     } 
    } 

Passa a:

if ($imsize === TRUE) { 
     if (($w > 0) AND ($h > 0)) { 
      // get measures from specified data 
      $pw = $this->getHTMLUnitToUnits($w, 0, $this->pdfunit, true) * $this->imgscale * $this->k; 
      $ph = $this->getHTMLUnitToUnits($h, 0, $this->pdfunit, true) * $this->imgscale * $this->k; 
      $imsize = array($pw, $ph); 
     } else { 
      $this->Error('[Image] Unable to get the size of the image: '.$file); 
     } 
    } 
+0

Lo stesso testo in entrambe le caselle? – leiavoia

Problemi correlati