2012-12-04 26 views
5

to pytanie wydaje się wiecznie na TCPDF ...
Mam problem, który doprowadza mnie do szału.TCPDF nie wyświetla obrazu z writeHTML

Mam kod HTML, który używam jako "szablon" dla mojego pliku PDF, tutaj mam logo mojej firmy.
Wszystko działa poprawnie na lokalnym hoście (Windows), ale kiedy poruszam się online, obraz nie jest wyświetlany.
Uważaj: Nie dostaję żadnego błędu (np. Nie można uzyskać obrazu błędu) na moim pliku PDF obraz jest prosty pusty!
Rzeczywiście, jeśli kliknę plik PDF w miejscu, w którym obrazy mają być, mogę je wybrać, a Adobe włącza opcję "Kopiuj obraz".

Oczywiście obraz istnieje, jest tutaj, a zgoda jest prawidłowa.
Jeśli spróbuję surfować w tym miejscu lub wyświetlić wygenerowaną stronę HTML, wszystko jest w porządku.

Jest to kod PHP:

$pdf->SetMargins($params->get('pdfMarginLeft', 15), $params->get('pdfMarginTop', 27), $params->get('pdfMarginRight', 15)); 
$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); 
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); 

$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); 

$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); 
$pdf->SetFont('helvetica', '', 8); 
$pdf->AddPage(); 

$pdf->writeHTML($html, true, false, true, false, ''); 

$pdf->lastPage(); 

Wtedy to mój kod HTML (ja po prostu pomijane wszystko oprócz obrazu):

<img alt="logo black" src="../images/logo_black.png" height="60" width="210" /> 

Próbowałem już z url (względne i absolutny) i ze ścieżką (względną i bezwzględną), problem nadal występuje. Jakieś pomysły?

Odpowiedz

7

Jak wszystko działa lokalnie, więc możesz spróbować zmienić typ obrazu z png do jpg i sprawdzić po zmodyfikowaniu kodu odpowiednio i wgraniu jpg na serwerze.

+0

cholera, to działa! cóż, naprawdę chciałbym wiedzieć, co było nie tak ... – tampe125

+2

może to być problem z przezroczystością ... nie jestem pewien ... [tutaj jest podobny wyglądający post] (http: //www.dolibarr.org/forum/527-bugs-on-a-stable-version/19407-tcpdf-error), możesz także przejść tam, gdzie ktoś sugeruje zmianę w _tcpdf \ _config.php _ .. sprawdź czy to działa dla twojego _png_ logo .. –

+0

Naprawdę, że pracował dla mnie również !!! –

16

To nie był twój problem, ale jest to możliwe rozwiązanie dla osób z podobnym problemem w futurte. Upewnij się, że atrybuty HTML mają podwójne cudzysłowy.

$html = "<img src='...' />"; // This will not work 

$html = '<img src="..." />'; // This will work 
+0

Masz rację! tcpdf wersja 6-2-12 –

+1

Cholera, uratowałeś mojego człowieka życia !! To jest głupie, ale właśnie dlatego mój magento pdfcustomer code nie renderował niestandardowych obrazów atrybutów !! Awans, to jest :) – Gogol

+0

oops literówka .. Miałem na myśli rendering: p – Gogol

0

Zaimplementowałem str_replace dla obrazu src, i to działa dobrze teraz.

$html = str_replace("../images", $_SERVER["DOCUMENT_ROOT"] . '/images', $html); 
1

W moim przypadku IMG tag nie działa aż piszę pełną ścieżkę dostępu do pliku

Nie działa

<img src="/pdfrender/XXX.jpg" width="50" height="50"> 

robocza (localhost przykładowy)

<img src="http://site.local/pdfrender/XXX.jpg" width="50" height="50"> 
+0

Dziękuję, to było to! – xandi

+0

Należy zauważyć, że w ten sposób statystyki sieci będą zawierały "TCPDF" jako agent użytkownika i zwiększają ruch na serwerze (trzeba zapłacić dwa razy, najpierw własne żądanie serwera do siebie + dane wyjściowe PDF), co również oznacza "nie". t chcę. – Roland

1

Można konwertować obraz wpisz "jpg/png" na base64. <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgA...."/> może ci to pomóc!

0

musiałem 'Ponownie Zapisz' obrazy:

$image = 'images/logo_example.png';  
imagepng(imagecreatefrompng($image),$image); 

Wtedy to działało.

Powiązane problemy