2015-11-30 10 views
6

Próbuję pobrać dane HTML/JSON z serwera WWW (Node.js) i przekonwertować je do formatu PDF po stronie klienta. Chciałbym wykonać przetwarzanie w przeglądarce użytkownika, aby mój serwer nie został przeładowany konwersjami PDF.Chunk i pipe duże ilości danych dla klienta-witryny (przeglądarki) Generowanie PDF

Nie powinno być problemu, jeśli dane nie były tak duże. Raport (dane pobrane z serwera) może sumować 200, 300 MB, a przeglądarki nie mogą obsłużyć tak dużej ilości danych w pamięci. Z tego powodu (prawdopodobnie) muszę pobrać i zapisać dane w kawałkach lub potokować je bezpośrednio do konwertera PDF.

Ale nie mogę tego objąć. Jak mogę obciąć dane w magazynie &? Rozglądałem się i znalazłem kilka bibliotek, ale nadal nie potrafiłem ich zmusić do współpracy. jakieś pomysły?

+0

Jaki jest wymagany rozmiar danych, które należy przesłać do przeglądarki? – guest271314

+0

Przechodzi z 50Kb do 800MB, 900MB. – AFMeirelles

+0

Nie można użyć odpowiedzi typu "chunked-response" lub "websockets" do przesyłania danych do klienta w sposób poręczny? jednakowe generowanie kodu PDF na kliencie nadal stanowi wyzwanie. – lipp

Odpowiedz

0

Nie wydaje mi się, żeby konsumenci korzystający z aplikacji generowali pliki PDF o pojemności 800 MB na swoich komputerach.

Unikałbym JSON w przypadku dużych rekordów. Jeśli istnieje ponad 25 MB rzeczywistych danych rekordów, wysłałbym te dane w formie binarnej/skompresowanej.

Jeśli chodzi o przeglądanie wszystkich tych danych, to nie sądzę, że PDF jest drogą do zrobienia. Utworzyłem specjalną przeglądarkę offline dla końcowego użytkownika. Być może niestandardowa wtyczka lub rozszerzenie przeglądarki, aby nie musiały wrzucać 800 MB do pamięci podczas przeglądania raportu.

Innym problemem może być skorzystanie z Dysku Google lub Rackspace OpenCloud lub AWS lub czegoś podobnego, z tego powodu, jeśli coś pójdzie nie tak po stronie konsumenta w połowie transferu, twój serwer będzie musiał zacząć wszystko od nowa. Jeśli wyrzucisz go w chmurze za CDN, możesz pobrać go, ile potrzeba, z serwera, który jest blisko nich. Również twój serwer powinien być w stanie wysłać go do chmury znacznie szybciej niż wysyłanie go do klienta, więc mniej czasu, że twój serwer ma otwarte zasoby.

+0

Interesujący punkt widzenia. Czy możesz mi powiedzieć więcej dlaczego uważasz, że generowanie pdf po stronie klienta nie jest dobrym pomysłem? Pomyślałem, że lepiej będzie, jeśli poproszę użytkownika o koszty przetwarzania, więc mój serwer nie zostanie zalany przez kilka żądań przetwarzania - i nie potrzebuję większego serwera. Obniża całkowity koszt aplikacji.Jeśli chodzi o najlepszy format PDF, niestety nie jest to opcja, jest to wymóg biznesowy. – AFMeirelles

+0

Zgadzam się, że najlepiej jest powierzyć jak najwięcej pracy klientom. Mam przeczucie, że zdecydowanie walczyłbym z tym wymogiem, chociaż wątpię, że byłoby to najlepsze doświadczenie dla końcowego konsumenta. Ale aby określić optymalne rozwiązanie, musiałbym dokładnie wiedzieć, jakie są surowe dane i dokładnie jakie informacje konsument ma uzyskać z surowych danych. Na przykład zbudowałem system zarządzania farmy wiatrowej. Surowe dane to szczegóły uszkodzenia/naprawy ostrza. Klient otrzymuje raporty PDF z wykresami i szczegółami, ale raporty są ograniczone do jednej inspekcji/naprawy projektu. – flcoder

Powiązane problemy