Dlaczego PDFKit / wkhtmltopdf zawiesza się, ale renderuje plik PDF zgodnie z oczekiwaniami, gdy aplikacja Railsy zostanie zabita?
Po przeczytaniu tego wydawało mi sięKrewetka jest poza iwkhtmltopdf jest w środkuPDFKit iwicked_pdf klejnoty dla Rails są nowe. Więc znalazłem screencast przezRyan najak korzystać z PDFKit. Zainstalowałem wszystko, przetestowałem wkhtmltopdf na CLI bez żadnych problemów, bawiłem się ustawieniami Railsów, aby uruchomić wiele procesów, tak aby potok działał poprawnie, i wszystko wydawało się dobre, z wyjątkiem tego, że wciąż tkwię na samym końcu procesu (faktycznie otrzymuję PDF odpowiedź z serwera).
PytanieKiedy zażądam.pdf
wersja mojego widoku (korzystam z opcji oprogramowania pośredniego PDFKit) moja przeglądarka po prostu siedzi tam, czekając na odpowiedź, ale gdy tylko zabiję Railsy, w oknie przeglądarki pojawi się plik PDF, który spodziewałem się uzyskać. Co daje?
wkhtmltopdf -V
to mówi 0.10.0_rc2)qt: 4.8.2Co ja zrobiłemużywał oprogramowania pośredniego PDFKit, ładującconfig.middleware.use "PDFKit::Middleware"
w moimapplication.rb
plik.w zestawiegem 'pdfkit'
na moim Gemfile i zainstalowałem go z BundleremUstaw.pdf
typ mime w moimmime_types.rb
inicjator zMime::Type.register_alias "application/pdf", :pdf
dodanyconfig.threadsafe!
doconfig/environments/development.rb
dla wielu wątków, więc potok zasobów nie koliduje z silnikiem PDFprzetestowanywkhtmltopdf http://www.google.com google.pdf
i wygenerował plik PDF strony głównej Google zgodnie z oczekiwaniamiPróbowałem zamienić PDFKit na Wicked_pdf i napotkał ten sam problem (zawieszony, ale gdy proces Railsów zostanie zabity, renderowanie PDF zgodnie z oczekiwaniami)Jak to wyglądaTo jest zwykła strona html renderowana przez Railsy (zamazałem szczegóły klienta):
To jest wyjście CLI tworzone przez Rails, gdy próbuję nawigować dolocalhost:3000/some/path.pdf
. (aplikacja zawiesza się podczas oczekiwania na odpowiedź):
Kiedy w końcu zabiję proces Railsctrl-c
PDF w końcu pojawia się w przeglądarce, tak jak się spodziewałem (CSS i HTML renderowane poprawnie, więc zasoby wydają się ładować dobrze):
Wymiana pliku PDFKit na plik wicked_pdf i uzyskanie takich samych wyników sprawia, że myślę, że problem nie dotyczy tych bibliotek, ale ma coś wspólnego z moim środowiskiem programistycznym. Ale wkhtmltopdf działa dobrze z linii poleceń, więc sprawia, że myślę, że to i QT wykonują swoją pracę. Problem musi być w Railsach. Może nie konfiguruję czegoś poprawnie?
Prośba o pomocJak określićco dokładnie jest problem i jak go naprawić?
Będę cię kochał, jeśli możesz mi pomóc <3
AktualizacjaPróbowałem również użyć alternatywnej metody renderowania pliku PDF (za pomocą.to_pdf
) bez opcji oprogramowania pośredniego w następujący sposób (wykomentowałem toconfig.middleware.use "PDFKit::Middleware"
od mojegoapplication.rb
plik):
respond_to do |format|
format.html
format.pdf do
html = '<html><body>This is a test.</body></html>'
@pdf = PDFKit.new(html)
send_data @pdf.to_pdf,
:filename => 'whatever.pdf',
:type => 'application/pdf',
:disposition => 'attachment'
end
end