![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 872 Pomógł: 94 Dołączył: 31.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
Część, chciałbym się Was zapytać, w jaki sposób można wygenerować duży plik PDF. Pisząc duży mam na myśli przynajmniej te 5000 stron. Sam HTML na podstawie którego to generuję ma ponad 13MB. Biblioteki napisane w PHP odrzuciłem na wstępie, ale niestety nawet wkhtmltopdf na linuxie nie daje rady. Będę wdzięczny za pomoc.
Z góry proszę o nie pisanie postów typu: masz to źle zaprojektowane, może da się generować mniejsze. Takie są niestety wymagania i nie ja je narzucam, a biznes (w korporacji). Dodam, że praktycznie cały PDF to jedna duża tabelka, może da się to generować nie na podstawie HTML, tylko jakoś inaczej. Ten post edytował lukaskolista 6.05.2015, 10:11:33 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 150 Pomógł: 31 Dołączył: 10.01.2007 Skąd: Bydgoszcz/Inowrocław Ostrzeżenie: (0%) ![]() ![]() |
Mógłbyś spróbować podzielić tabelę na części, wygenerować kilka(-set) mniejszych PDF a na końcu skorzystać z PDFMergera https://pdfmerger.codeplex.com/
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 872 Pomógł: 94 Dołączył: 31.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
Tylko wtedy nie zachowam płynnych przejść tabeli na kolejną stronę w miejscach łączeń plików pdf, a nie jestem w stanie obliczyć ile konkretnie wierszy zmieści się na 1 stronie, żeby wyświetlić odpowiednią ilość do płynnego przejścia.
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 150 Pomógł: 31 Dołączył: 10.01.2007 Skąd: Bydgoszcz/Inowrocław Ostrzeżenie: (0%) ![]() ![]() |
No cóż, wkhtmltopdf się wykrzacza? tzn nie generuje nic, czy generuje, ale nie działa ze skryptu? Jeśli to drugie, to zmień wersję na QT i możesz skorzystać z knp-snappy (mozna doinstalowac z composera w php)
Możesz też spróbować skonwertować html do postscript (html2ps) i dopiero to do pdf... Ale to tylko rozwazania, nigdy nie probowalem rozwiazywac takiego problemu, ale ponoc co 2 glowy to nie 1 ![]() |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 872 Pomógł: 94 Dołączył: 31.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
Jak dla mnie problem leży w wydajności wkhtmltopdf, przy mniejszych ilościach HTML (np. dających 200 stron pdf) działa w kilka sekund. FPDF w php daje radę wygenerować taką tabelę w kilka sekund, ale znowu nie ma osbługi nagłówków i stopek dla stron oraz HTML, generalnie jest ubogi. Mpdf wymięka nawet przy tych 200 stronach pdf.
Spróbuję zwiększyć limit pamięci (w tej chwili 1GB na wirtualce), ale wątpię, że coś to da. Cytat No cóż, wkhtmltopdf się wykrzacza? tzn nie generuje nic, czy generuje, ale nie działa ze skryptu? Generuje pusty pdf (0kb), wersję mam z QT, ponieważ tylko z QT daje osbługę nagłówków i stopek z zewnętrznych plików. Nie rozumiem stwierdzenia "nie działa ze skryptu". Ogólnie w wkhtmltopdf dochodzę do momentu: Loading pages (1/6) [==============================> ] 50% i tak zostaje na tych 50% nawet kilka godzin (raz trzeba było wirtualke zrestartować, bo nie dało się z nią nawet połączyć). Edit: przy generowaniu postscripta nie działają stopki i nagłówki, poza tym też tworzy pusty plik Edit 2: Zwiększyłem limit pamięci do 3GB i teraz działa szybko, niestety wywala się na nagłówkach i stopkach dla stron z komunikatem: Error: Failed loading page file:///sciezka_do_pliku_stopki (sometimes it will work just to ignore this error with --load-error-handling ignore) a na samym końcu wali błędem: QPaintDevice: Cannot destroy paint device that is being painted Edit 3: w miarę postępu prac edytuję ten temat, żeby było dla innych. Zmieniłem opcje --header-html i --footer-html aby pobierały nagłówek i stopkę przez http:// zamiast przez file:// i otrzymałem komunikat o przekroczonym limicie otwartych plików. Prawdopodobnie przy file:// jest ten sam błąd, tylko wyświetla info, że nie może otworzyć pliku zamiast info o przekroczonym limicie otwartych plików. Po ustawieniu wiekszego limitu (muszę na to poczekać) napiszę, jaki jest efekt. Ten post edytował lukaskolista 6.05.2015, 14:57:03 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 1 045 Pomógł: 141 Dołączył: 19.09.2006 Skąd: B-tów Ostrzeżenie: (0%) ![]() ![]() |
nie testowałem ale może spróbuj tego https://sites.google.com/site/torisugari/commandlineprint2
wygląd obiecująco |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 872 Pomógł: 94 Dołączył: 31.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
Niestety, ale potrzebuję opcji nagłówka dla każdej strony, w dodatku w zależności od numeru strony nagłówek ma być inny, a podane przez Ciebie narzędzie nie dostarcza tej funkcjonalności. Mimo wszystko dziękuję za pomoc.
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 150 Pomógł: 31 Dołączył: 10.01.2007 Skąd: Bydgoszcz/Inowrocław Ostrzeżenie: (0%) ![]() ![]() |
Nie wiem, czy rozwiązałeś problem, ale z tego co pamiętam, to były rzeczywiście jakieś problemy z plikami naglowkow, sprobuj tego:
* w plikach z header i footer dodaj <!DOCTYPE html> na poczatku * nie dawaj file:// jeśli jest to na lokalnym serwerze, po prostu /sciezka/do/pliku.html |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 872 Pomógł: 94 Dołączył: 31.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
Tak właśnie robię. Problem leżał w niewystarczającej ilości RAM, teraz mam problem z limitem maksymalnej ilości otwartych plików. Jak go zwiększą (admini), to wtedy sprawdzę.
Po zwiększeniu limitu wkhtmltopdf mieli mieli i mieli, po czym generuje pusty plik pdf (0 bajtów). Czy ktoś spotkał się z takim problemem? Dodam, że pojawia się on tylko w przypadku użycia opcji nagłówka lub stopki z zewnętrznych plików. (--header-html i --footer-html). Ten post edytował lukaskolista 11.05.2015, 13:24:32 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 16.05.2025 - 15:09 |