dompdf бавен и генерира грешка при неуспешна HTTP заявка

Използвам dompdf с laravel 5 за генериране на pdf на профил, но това отнема повече от 15 минути и след това показва грешка. потокът е като тази отворена страница за показване на профил в браузъра, страницата има връзка за изтегляне като pdf с url на същото действие (показване на профил) с допълнителен параметър pdf=yes и след това използвам условие if за проверка на pdf извикване

Exception in PDF.php line 219: DOMDocument::loadHTML(): htmlParseEntityRef: no name in Entity, line: 41
DOMDocument::loadHTML(): ID personal-info-2 already defined in Entity, line: 104
DOMDocument::loadHTML(): ID personal-info-2 already defined in Entity, line: 110
DOMDocument::loadHTML(): ID personal-info-2 already defined in Entity, line: 116
DOMDocument::loadHTML(): ID personal-info-2 already defined in Entity, line: 122
DOMDocument::loadHTML(): ID personal-info-2 already defined in Entity, line: 128
DOMDocument::loadHTML(): ID personal-info-2 already defined in Entity, line: 134
DOMDocument::loadHTML(): ID personal-info-2 already defined in Entity, line: 140
DOMDocument::loadHTML(): ID personal-info-2 already defined in Entity, line: 145
DOMDocument::loadHTML(): ID personal-info-2 already defined in Entity, line: 150
DOMDocument::loadHTML(): ID personal-info-2 already defined in Entity, line: 155
DOMDocument::loadHTML(): ID personal-info-2 already defined in Entity, line: 160
DOMDocument::loadHTML(): ID personal-info-2 already defined in Entity, line: 165
DOMDocument::loadHTML(): ID personal-info-2 already defined in Entity, line: 170
DOMDocument::loadHTML(): ID personal-info-2 already defined in Entity, line: 177
DOMDocument::loadHTML(): ID personal-info-2 already defined in Entity, line: 188
DOMDocument::loadHTML(): ID personal-info-2 already defined in Entity, line: 193
DOMDocument::loadHTML(): ID personal-info-2 already defined in Entity, line: 211
DOMDocument::loadHTML(): ID personal-info-2 already defined in Entity, line: 216
DOMDocument::loadHTML(): ID personal-info-2 already defined in Entity, line: 222
DOMDocument::loadHTML(): ID personal-info-2 already defined in Entity, line: 227
DOMDocument::loadHTML(): Tag footer invalid in Entity, line: 330
DOMDocument::loadHTML(): Unexpected end tag : div in Entity, line: 333
DOMDocument::loadHTML(): Unexpected end tag : div in Entity, line: 334
DOMDocument::loadHTML(): Unexpected end tag : span in Entity, line: 355
DOMDocument::loadHTML(): Unexpected end tag : span in Entity, line: 358
file_get_contents(http://10.0.0.46:2000/front/css/bootstrap.min.css): failed to open stream: HTTP request failed!
Unable to load css file http://10.0.0.46:2000/front/css/bootstrap.min.css
file_get_contents(http://10.0.0.46:2000/front/font-awesome/css/font-awesome.min.css): failed to open stream: HTTP request failed!
Unable to load css file http://10.0.0.46:2000/front/font-awesome/css/font-awesome.min.css
file_get_contents(http://10.0.0.46:2000/front/css/styles.css): failed to open stream: HTTP request failed!
Unable to load css file http://10.0.0.46:2000/front/css/styles.css
file_get_contents(http://10.0.0.46:2000/front/css/custom-style.css): failed to open stream: HTTP request failed!
Unable to load css file http://10.0.0.46:2000/front/css/custom-style.css
file_get_contents(http://10.0.0.46:2000/front/css/custom-mediaqueries.css): failed to open stream: HTTP request failed!
Unable to load css file http://10.0.0.46:2000/front/css/custom-mediaqueries.css
file_get_contents(http://10.0.0.46:2000/front/images/logo.png): failed to open stream: HTTP request failed!
file_get_contents(http://10.0.0.46:2000/front/images/facebook.png): failed to open stream: HTTP request failed!
file_get_contents(http://10.0.0.46:2000/front/images/LinkedIn.png): failed to open stream: HTTP request failed!
file_get_contents(http://10.0.0.46:2000/front/images/Pinterest.png): failed to open stream: HTTP request failed!
file_get_contents(http://10.0.0.46:2000/front/images/Twitter.png): failed to open stream: HTTP request failed!
file_get_contents(http://10.0.0.46:2000/front/images/img-not-found.jpg): failed to open stream: HTTP request failed! 

Същата страница се отваря добре в браузъра


person Mr. Tomar    schedule 28.09.2015    source източник
comment
можете ли да поставите изгледа, използван за генериране на pdf, а също и вашия метод на контролер.   -  person osleonard    schedule 28.09.2015


Отговори (1)


Изглежда, че сте настроили PHP известия/предупреждения/грешки да се показват на браузъра. Независимо от това дали dompdf може да анализира вашия документ, вие няма да получите очаквания резултат, защото:

  1. При забранено буфериране на изхода dompdf ще откаже да предава документа, тъй като заглавките вече са изпратени. Това се случва, защото уеб сървърът вече е задал типа съдържание и го е изпратил до браузъра с PHP грешки. Ако dompdf не може да промени типа на съдържанието на тип PDF MIME, ще откаже да предава поточно PDF файла.
  2. При активирано буфериране на изхода dompdf ще изпрати PDF файла до браузъра, но вашите PHP грешки ще получат причина в изходния поток и ще направят PDF файла неразборим от PDF зрители.

Така че трябва да деактивирате изпращането на известия до браузъра. Ако не поради причините по-горе, то защото това е риск от разкриване на информация. Ако искате да са активирани, трябва поне да ги деактивирате, когато използвате dompdf (напр. ini_set('display_errors', false);).

Като се има предвид това, имате някои проблеми със структурата на вашия документ: дублиращи се ID атрибути на елементи, несъответстващи отварящи/затварящи тагове, неразпознати елементи. Трябва да пуснете генерирания си HTML чрез валидатор и да коригирате колкото се може повече проблеми.

И накрая, вашият външен ресурс (CSS, изображения) не се зарежда. Или URL адресите са лоши, или PHP настройката allow_url_fopen е зададена на false.

person BrianS    schedule 09.10.2015