Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: ZAJDAN 29. 02. 2016, 14:18:05
-
Ahoj,,,
narazil jsem na problém v PHP 'Cannot modify header information'
mam formular a hodnoty z nej POSTuju na php soubor ktery prevezme do promenych hodnoty z formu, dale pomoci knihovny wkhtml vygeneruje PDF. Tento proces sam o sobě facha jak má, jenže trvá dlouho a tak jsem si řekl, že tam lupnu preloader/progress bar a ten se na stránku vygenrejuje pres echo, ale tím pádem odešle headers a následný proces (generováni PDF) se do té stejné stránky browseru snaží headers odeslat taky, což způsobý tu chybu.
dá se s tím nějak vyjebat?
díky za tip
-
No nejednodusi je asi nechat generovat pdf na pozadi a jak progress pozna, ze je soubor vygenerovan tak te presmeruje na jinou akci, kde dojde ke stazeni souboru.
-
No nejednodusi je asi nechat generovat pdf na pozadi a jak progress pozna, ze je soubor vygenerovan tak te presmeruje na jinou akci, kde dojde ke stazeni souboru.
-v mém případě, ale progress proces není synchroní s generováním PDF... uživatel prostě vidí, že se něco děje a to je lepší než blank page.
-dále já ten soubor na serveru neukládám (send to client as file download $pdf->send('report.pdf');)
-
Tak bych doporučil ten soubor ukládat…
Možná by mohlo jít posílat to jako multipart
header('Content-type: multipart/x-mixed-replace;boundary=endofsection');
print "Content-type: text/html\n\n";
(progress)
print "\n\n";
print "--endofsection\n";
ob_flush();
flush();
print "Content-type: něco/PDF\n\n";
(formulář)
Ale z uživatelského hlediska mi přijde, že to může dělat problémy.
-
-v mém případě, ale progress proces není synchroní s generováním PDF... uživatel prostě vidí, že se něco děje a to je lepší než blank page.
to se dela tak... <div id="throbber-id"> obvykle absolutni pozice. pozadi gif image. display: none;
$(".trida-odkazu-ke-stazeni").click(function() {
$("#throbber-id").show();
});
-
to se dela tak... <div id="throbber-id"> obvykle absolutni pozice. pozadi gif image. display: none;
$(".trida-odkazu-ke-stazeni").click(function() {
$("#throbber-id").show();
});
mas na mysli ten js kod+html element umistit na puvodni page(formular)...? protoze to by ztracelo smysl, pac by se po kliknuti zobrazil v ramci formulare, ale me to po kliknuti presmeruje na 'generatePDF.php' a tam se o tom html elementu(gif) jiz nic nevi
-
https://cs.wikipedia.org/wiki/AJAX
-
https://cs.wikipedia.org/wiki/AJAX
vzhledem k tomu, ze ja to pdf neukladam do souboru ani do db, bylo by nejspis velice obtizne si to zpracovat ajaxem,
vse se deje v pameti a hotove pdf je odeslano klientovy do prohlizece s vyzvou k ulozeni souboru(pdf)
-
ale me to po kliknuti presmeruje na 'generatePDF.php' a tam se o tom html elementu(gif) jiz nic nevi
pokud nemas zadne presmerovani, ale uplne normalni odkaz tak to neodejde ze stranky nybrz nabidne stahovani - teda pokud z generatePDF.php posilas spravne hlavicky. a potom by mnou napsane easy reseni melo fungovat. Aspon me teda funguje pro uplne stejnou vec.
-
ale me to po kliknuti presmeruje na 'generatePDF.php' a tam se o tom html elementu(gif) jiz nic nevi
pokud nemas zadne presmerovani, ale uplne normalni odkaz tak to neodejde ze stranky nybrz nabidne stahovani - teda pokud z generatePDF.php posilas spravne hlavicky. a potom by mnou napsane easy reseni melo fungovat. Aspon me teda funguje pro uplne stejnou vec.
u me je to tak, ze jakmile uzivatel na formulari klikne na button 'generovat PDF' ...prohlizec otevre nove okno(generatePDF.php) a v momente kdy je renderovani PDF hotovo, vybehne okno s vyzvou k ulozeni souboru
-
ale udelam to jak pises..je zbytecne otvirat nove okno...jinak by tomu bylo pokud by se PDF otevrelo primo do okna prohlizece, tam by to bylo na miste
zmenim tedy:
target="_blank" na target="_self"
a pouziju ten js hide/show jak jsi predtim zminil
díky moc
-
na target se vybodni. aby mu PDF neotevrela zabudovana ctecka tak na to jsou prave hlavicky... si to vygugli - "php header download file"
EDIT: ten js co jsem psal potrebuje jquery. ale prepsat to na cisty js by nemel byt zasadni problem.
-
na target se vybodni. aby mu PDF neotevrela zabudovana ctecka tak na to jsou prave hlavicky... si to vygugli - "php header download file"
EDIT: ten js co jsem psal potrebuje jquery. ale prepsat to na cisty js by nemel byt zasadni problem.
jj, diky za tipy..ted uz by to mela byt snadna akce :)
-
tož už to valí ..už to fachá :_) thanx once again
-
Ahoj,,,
narazil jsem na problém v PHP 'Cannot modify header information'
mam formular a hodnoty z nej POSTuju na php soubor ktery prevezme do promenych hodnoty z formu, dale pomoci knihovny wkhtml vygeneruje PDF. Tento proces sam o sobě facha jak má, jenže trvá dlouho a tak jsem si řekl, že tam lupnu preloader/progress bar a ten se na stránku vygenrejuje pres echo, ale tím pádem odešle headers a následný proces (generováni PDF) se do té stejné stránky browseru snaží headers odeslat taky, což způsobý tu chybu.
dá se s tím nějak vyjebat?
díky za tip
Jasně, že dá, to pdf získejte pomocí file_get_contents na url, které ho vygeneruje, to uložte do tmp souboru, pak redirect na url s parametrem název tmp souboru, které provede download.