Witam,
Mam następujący problem. Posiadam w bazie danych tabele meeting, w niej id, guest,host, start_time,end_time oraz table_numer. Do generowania używam wkhtmltopdf oraz symfony 3, samo generowanie pdf to żaden problem, niestety Twig nie chce ze mną współpracować. Chciałbym zrobić tak, aby najpierw wygenerowało spotkania dla stolika 1, później dla 2 itd. Cały proces powinien wyglądać tak:
- Początek generowania pdf dla stolika 1
- Zmienia się stolik z 1 na 2, następuje page break i zaczyna generować nową stronę ze spotkaniami dla stolika 2 itd
Problem polega na tym, że generuje mi pdf dla stolika 1, po czym dorzuca 1 spotkanie dla stolika 2. Zaczyna generować pdf dla stolika 2, na koniec wrzuca mi 1 spotkanie ze stolika 3. Tak wygenerowany pdf wygląda tak: http://cyrklaf.eu/table.pdf
Nie mam pojęcia gdzie jest błąd, że zawsze pobiera jedno spotkanie z innego stolika. Mój kod Twig bo w nim leży problem:
<!doctype html> <http://december.com/html/4/element/html.html lang="pl"> <http://december.com/html/4/element/head.html> <http://december.com/html/4/element/meta.html charset="utf-8"> <http://december.com/html/4/element/style.html> body { background: #FFF; } .page { page-break-after: always; } </http://december.com/html/4/element/style.html> </http://december.com/html/4/element/head.html> <http://december.com/html/4/element/body.html> {% set last_table = 1 %} {% for meeting in meetings %} <http://december.com/html/4/element/div.html class="page"> {{ meeting.guest }} {{ meeting.host }} stolik obecny {{ meeting.tableNumber }} stolik poprzedni {{ last_table }} {% if meeting.tableNumber != last_table %} // Jeżeli obecny stolik jest inny od ostatniego powinien zakończyć generowanie i rozpocząc dla kolejnego stolika {% set last_table = meeting.tableNumber %} </http://december.com/html/4/element/div.html> {% endif %} {% endfor %} </http://december.com/html/4/element/body.html> </http://december.com/html/4/element/html.html>
Musisz napisać w skrypcie, aby pętla jechała od iteracji drugiej (stolika drugiego), a nie od nowa od pierwszego (pierwszej iteracji).
Musisz chyba dodać warunek w tym for, przykład z doc.:
Jak zrobię tak jak napisałeś tzn
to dostaję Variable "meetings" does not exist.
for meetings in meeting
Niestety efekt jest ten sam http://cyrklaf.eu/table2.pdf
Wypluj to co twig generuje do HTML i pokaż
""" <!doctype html>\n \n <http://december.com/html/4/element/html.html lang="pl">\n <http://december.com/html/4/element/head.html>\n <http://december.com/html/4/element/meta.html charset="utf-8">\n <http://december.com/html/4/element/style.html>\n body {\n background: #FFF;\n }\n \n .page {\n page-break-after: always;\n }\n </http://december.com/html/4/element/style.html>\n </http://december.com/html/4/element/head.html>\n <http://december.com/html/4/element/body.html>\n <http://december.com/html/4/element/div.html class="page">\n ipsum lorem stolik obecny 1 stolik poprzedni 1\n <http://december.com/html/4/element/br.html/>\n \n dolor sit stolik obecny 1 stolik poprzedni 1\n <http://december.com/html/4/element/br.html/>\n \n lorem puszek stolik obecny 1 stolik poprzedni 1\n <http://december.com/html/4/element/br.html/>\n \n laura karolina stolik obecny 1 stolik poprzedni 1\n <http://december.com/html/4/element/br.html/>\n \n sit laura stolik obecny 2 stolik poprzedni 1\n <http://december.com/html/4/element/br.html/>\n \n \n </http://december.com/html/4/element/div.html>\n <http://december.com/html/4/element/div.html class="page">\n dolor reverse stolik obecny 2 stolik poprzedni 2\n <http://december.com/html/4/element/br.html/>\n \n reverse pawel stolik obecny 2 stolik poprzedni 2\n <http://december.com/html/4/element/br.html/>\n \n puszek lorem stolik obecny 2 stolik poprzedni 2\n <http://december.com/html/4/element/br.html/>\n \n pawel pysia stolik obecny 3 stolik poprzedni 2\n <http://december.com/html/4/element/br.html/>\n \n \n </http://december.com/html/4/element/div.html>\n <http://december.com/html/4/element/div.html class="page">\n pysia laura stolik obecny 3 stolik poprzedni 3\n <http://december.com/html/4/element/br.html/>\n \n </http://december.com/html/4/element/div.html>\n </http://december.com/html/4/element/body.html>\n </http://december.com/html/4/element/html.html> """
No to już powinieneś widzieć rozwiązanie. Najpierw wyświetlasz a potem wstawiasz separator strony
Przyznam szczerze, że nie widzę rozwiązania ;/ długo się już z tym bawię i nadal nic
No przecież ci napisałem gdzie masz błąd.
Ja używam w Symfony i w Laravelu TCPDF-a zainstaluj sobie paczkę i będziesz miał po problemie.
TCPDF pozwala generować PDF-y z kodu HTMLa, więc masz pole do popisu.
https://tcpdf.org/examples/example_006/
https://tcpdf.org/examples/example_061/
https://github.com/tecnickcom/TCPDF
@LowiczakPL naucz się czytać w końcu i albo odpowiadaj na pytanie które zostało zadane albo nie odpowiadaj wcale bo twoja odpowiedź NIC nie wniosła do tematu. BA nawet nie rozwiąże problemu bo nie jest on związany z programem którego używa a z KODEM HTML.
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)