PDF-ként letöltődő PHP hívása
Üdv, a következő lenne a problémám.
Van egy PDF generáló PHP-m, ami gyakorlatilag egy pdf file-ként érkezik a kliensre. (TCPDF osztály segítségével.) Ezt a PHP filet szeretném kliens oldalról elérni úgy, hogy POST-al egy tömböt küldök neki, ami objektumokból áll. Ezzel semmi gond nem lenne, sima ajax kéréssel rendben is lenne, ám ezesetben válaszként ugye a PDF tartalmát kapom, amivel nem tudok mit kezdeni, mivel egy letölthető filet szeretnék kapni. Persze ott a másik megoldás, egy form rejtett mezőkkel, viszont itt meg az a probléma, hogy nem tudom megoldani a tömb form-ban elküldését.
Van egy lehetőségen még a TCPDF-ben, mégpedig hogy a generálás után ne a kész file-al térjen vissza, hanem azt csak szerverre mentse, és utána én a kész pdf linkjét ajax válaszként küldje vissza a kliensnek. Ez egy működő megoldás lenne, de nem igazán tartom jó ötletnek, nem szeretném a tárhelyre menteni.
Szóvel egy olyan megoldás érdekelne, ami lehetővé teszi, hogy: 1 - tömböt post-oljak a php-nak; 2 - az érkező kész pdf letöltése automatice elinduljon.
Bocsi ha nem volt teljesen tiszta a mondandóm, vasárnap este már én sem vagyok az. :)
re: PDF-ként letöltődő PHP hívása
Ez segít
hxxp://stackoverflow.com/questions/16086162/handle-file-download-from-ajax-post
re: PDF-ként letöltődő PHP hívása
Köszönöm, nagyjából én is így gondoltam a form-os megoldást, am annyi a probléma, hogy én amint írtam is, egy objektumokból(asszociatív tömbökből) álló tömböt szeretnék küldeni, és objektumot nem tudok input value értékeként adni. Egy sima [akár asszociatív] tömb magában ugye nem lenne probléma, ahogyan az a mellékelt példán is látható. Bár nemigazán értem, miért küldi el a kérdező először ajax-al az adatot, majd form-al ismét ugyanazt... de lényegtelen.
Viszont most egy hétig nem leszek internetközelben, úgyhogy előre is elnézést mindenkitől, ha nem reagálok. Előre is köszönöm a válaszokat.
re: PDF-ként letöltődő PHP hívása
Senkinek sincs semmi ötlet? :crying:
re: PDF-ként letöltődő PHP hívása
Idézet:
wazemaki eredeti hozzászólása
1 - tömböt post-oljak a php-nak;
Egyszerűen JSON adatként?
re: PDF-ként letöltődő PHP hívása
Ha a HTTP fejlécet okosan küldöd, kényszeríteni fogja a letölést.
Itt van egy library: Laravel Excel Documentation - Maatwebsite
Ennek nézz bele a kódjába githubon, keresd a ->download() metódus kódját, abban lesz az auto file letöltés (pdf-et is exportál, és ha esetleg laravelt használsz, akkor tcpdf-fel is működik)
https://github.com/Maatwebsite/Larav...xcelWriter.php
254. sor, innen kövesd vissza
re: PDF-ként letöltődő PHP hívása
Idézet:
wazemaki eredeti hozzászólása
2 - az érkező kész pdf letöltése automatice elinduljon.
Ez is egyszerű:
PHP kód:
$url = 'https://net.educause.edu/ir/library/pdf/ELI7026.pdf';
header('Content-Type: application/pdf');
header("Content-Transfer-Encoding: Binary");
header("Content-disposition: attachment; filename=ELI7026.pdf");
header('Accept-Ranges: bytes');
@readfile($url);
Bár én jöbban szeretem ha a böngészőmbe nyílik:
PHP kód:
header("Content-disposition: inline; filename=ELI7026.pdf");
re: PDF-ként letöltődő PHP hívása
Idézet:
mfkzt eredeti hozzászólása
Ez is egyszerű: [ ... ]
Igen ez valóban egyszerű, ám a tcpdf automatikusan beállítja a headereket, így ezeket is felülírja. De nem is ezzel lenne a gond (szerintem), mert ha pl. címsorból érem el a generáló php-t, akkor úgy működik, ahogyan kéne. Szerk: a tcpdf jól állítja be a headereket / a félreértés elkerülése végett :) /
A gond ott kezdődik, hogy csak ajax hívással nem működik, mert ahogyan korábban is írtad, igen, json adatként küldöm ajax-al. Egyszerűen az ajax error függvénye fut le. A kérésben a dataType-al lehet gond? Eddig itt 'application/pdf'-et írtam.