2013-03-01 10 views
8

Na moim serwerze PDF wygenerowany przez dompdf nie wyświetlał obrazów. Ponieważ są to zdalne obrazy URL. (Lokalne obrazy działają bez zarzutu) to wiem, że potrzebne są ustawienia do renderowania zdalnych obrazów.Zdalny obraz Dompdf nie wyświetla się w pdf

allow_url_fopen = true => i can not as server control is not in my hand.(and no one will suggest to do this due to security reasons) 
read/write access to the DOMPDF_TEMP_DIR (already have this) 
DOMPDF_ENABLE_REMOTE = true (already have this) 

Tak, aby upewnić się, że problem allow_url_fopen, ustawić wartość false w moim localhost, który jest teraz daje taki sam efekt jak serwer.

Więc teraz problem jest teraz chcę wyświetlać obrazy w formacie PDF zdalnych z allow_url_fopen = false

  • Próbowałem prawie 5-10 unikalnych sposobów, aby to zrobić.
  • Próbowałem wyświetlać obraz w pliku php (poprzez ustawienie nagłówki), a następnie wyświetlania link php w pdf
  • Próbowałem wyświetlanie obrazu poprzez bezwzględną ścieżkę do php zbyt ale nic pracował.
  • Próbowałem przez uzyskanie obrazu przez curl w funkcji, a następnie wyświetlanie go w pliku php ... ale bez powodzenia.

Czy ktoś może zasugerować mi, jak mogę wyświetlić obraz w pdf proszę. Błąd zawsze jestem coraz to ...

Image not found 
http://localhost/dompdf/image.php 

i

Image not found 
http://localhost/dompdf/image.jpg 
+0

znaleźliście jakieś rozwiązanie? Mam ten sam problem, obrazy wyglądają dobrze na localhost, ale nie na serwerze na żywo, ścieżka jest w porządku, obraz jest już na serwerze. –

+0

nie. wciąż go nie znalazłem. – TechCare99

Odpowiedz

23

miałem ten sam problem, dompdf image not found on live server

znalazłem swoje rozwiązanie, po prostu trzeba dokładnie sprawdzić ścieżka obrazu,

Uwzględnianie ścieżki obrazu na serwerze na żywo

<img src="http://www.example.com/public/images/thumb.png"> 

Po prostu trzeba go zmienić,

<img src="public/images/thumb.png"> 

Uwaga: Upewnij się, że wszystkie ustawienia są takie same jak już wykonane.

Mam nadzieję, że to ci pomoże.

+0

+1 szukał problemu od pół godziny, a ten naprawdę pomógł. –

+0

Dzięki temu pomogło! – gvanto

+0

@irfan Ahmed Dzięki za twoje rozwiązanie – Athi

0

można dotrzeć do tych adresów URL w przeglądarce internetowej na komputerze, który używasz do otwierania plików PDF? Jeśli nie, czytnik PDF również nie będzie mógł.

Podejrzewam, że domena "localhost" oznacza, że ​​te adresy URL są widoczne tylko z serwera sieciowego, który wygenerował plik PDF. Musisz wydrukować URL, taki jak http://example.com/dompdf/image.jpg

(Aby obejść ten problem, należy pamiętać, że istnieją dobre powody, aby nie używać zdalnych obrazów. Dokument będzie wyglądał źle, jeśli przeglądarka nie jest połączona z internetem, na przykład Czy można po prostu osadzić obrazy bezpośrednio w dokumencie?)

+0

Tutaj użytkownik przegląda moją stronę i generuje dynamicznie pdf i na przykład wyświetlam jego zdjęcie profilowe w formacie pdf. (Profilepic jest na serwerze cdn) Więc może mogę dać związek jak cdnserver.com/user/12.jpg lub innym sposobem jest myserver.com/user_profiles/pic.php?id=12 zarówno sposób nie działa a użytkownik ma dostęp do Internetu – TechCare99

0

dompdf nie ma obecnie mechanizmu rozróżniania między domeną lokalną a zdalną, więc każdy adres URL, który rozpoczyna http: // ... jest traktowany jako zdalny. Ponadto dowolny obraz korzystający z pośrednika opartego na PHP (np. Pic.php) nie może korzystać z lokalnej ścieżki, ponieważ PHP nie zostanie przeanalizowane, dopóki nie przejdziesz przez serwer WWW.

To trudna perspektywa, ale Twoje strony są generowane dynamicznie. Więc widzę dwie opcje:

  1. zdalne pobieranie obrazów i linków do nich na lokalnym systemie plików
  2. zdalne pobieranie obrazów i danych za pomocą identyfikatora URI.

Ponieważ już udało Ci się uzyskać obraz za pomocą loków, powinieneś być w stanie zaimplementować jedną z nich.

-1

Przejdź do pliku dompdf_config.inc.php i ustaw zmienną DOMPDF_ENABLE_REMOTE na TRUE ...

+1

Nie widzisz tego, on już robi to samo, na które odpowiedziałeś. –

0

myślę można dodać ten

private function change_url_image($data, $url) {  
    $str = $url; //for example "http://localhost/yoursite/"; 
    $str2 = str_replace($str, "", $data); 
    return $str2; 
} 

zmienić URL obrazu

5

Są dwie rzeczy do załatwienia.

1) Jeśli używasz obrazu z tego samego serwera, użyj pełnej ścieżki do katalogu, np. /var/www/html/project_folder/images/logo.jpg

2) Użyj obrazu JPEG zamiast png lub innych typów.

+0

Ten (1) pracował dla mnie. Wielkie dzięki za udostępnienie! – raphael

0

Ten sam problem, z którym miałem do czynienia, a także ustawiono "DOMPDF_ENABLE_REMOTE => true" w "dompdf/dompdf_config.inc", ale nie działało.

Jedno pracował dla mnie zmienić src dla obrazów/css od absolutnego do względnego i rzeczy done.in tym przypadku mam wszystkie css/obrazy na moim serwerze.

15

Spróbuj

$options = new Options(); 
$options->set('isRemoteEnabled', true); 
$dompdf = new Dompdf($options); 
+0

To mi się udało! – Novocaine

+2

Musiałem również użyć klasy Opcji, jak w przykładzie: 'use Dompdf \ Options;' – Gavin