2010-08-12 9 views
5

Mam zainstalowanego PDFKit w mojej aplikacji Rails 3, używając RVM (musiał ręcznie skopiować plik binarny wkhtmltopdf). Kiedy próbuję uczynić wersji PDF na stronie, otrzymuję ten błąd:Polecenie Rails 3 - wkhtmltopdf nie powiodło się podczas używania PDFKit do tworzenia dokumentów PDF.

 
RuntimeError in AgenciesController#show 

command failed: ["lib/wkhtmltopdf/wkhtmltopdf", "--disable-smart-shrinking", "--page-size", "Letter", "--margin-top", "0.75in", "--margin-right", "0.75in", "--margin-bottom", "0.75in", "--margin-left", "0.75in", "--encoding", "UTF-8", "--quiet", "\n.......\n", "-"] 

Poniżej moim applicaition.rb:

 
    config.middleware.use "PDFKit::Middleware" 
    PDFKit.configure do |config| 
    config.wkhtmltopdf = 'lib/wkhtmltopdf/wkhtmltopdf' 

    end 

An pomysły dlaczego tak się dzieje? jak mogę to naprawić?

W konsoli zauważyłem tę wiadomość:

 
(sometimes it will work just to ignore this error with --ignore-load-errors) 

Gdzie mogę powołują się na to przełącznik? wkhtmltopdf wydaje się działać dobrze na linii poleceń, mogę zrobić coś jak "./wkhtmltopdf http://www.google.com google.pdf" i wygenerować plik PDF.

Dzięki za pomoc,

Peter

+0

Wypróbowałem config.wkhtmltopdf z absolutną ścieżką, zrestartowałem serwer, ale dostałem ten sam błąd. – futureshocked

+0

Udało ci się uzyskać poprawkę? Przechowałem pliki wykonywalne na 'my_app_path/lib/wkhtmltopdf' Tak jak powiedziałeś, działa to z terminala. Ale nie działa, gdy uruchamiam serwer Webrick w trybie produkcji. Każda pomoc będzie doceniona. Dzięki – TheMouseMan

+0

Nie, zrezygnowałem z tego podejścia, ponieważ nie działa to, co próbowałem zrobić, i udałem się do Prawn zamiast (https://github.com/prawnpdf/prawn). – futureshocked

Odpowiedz

5

sądząc z kodem źródłowym, można ustawić opcje na PDFKit. Myślę, że będzie działać następuje:

PDFKit.configure do |config| 
    config.default_options[:ignore_load_errors] = true 
end 

(nie testowałem go jednak)

+1

To działało, aby aplikacja nie uległa awarii po załadowaniu strony z rozszerzeniem .pdf. Strona w formacie PDF jest jednak renderowana jako pusta. Co mogło być przyczyną tego? – futureshocked

+0

Zgaduję, że 'wkhtmltopdf' kończy się niepowodzeniem. Nie jestem jednak pewien, co z tym zrobić. – troelskn

1

użyłem tego siekać.

config.wkhtmltopdf = `which wkhtmltopdf`.gsub(/\n/, '') 

Komenda która zwraca na końcu nową linię.

0

Ponieważ masz już zainstalowane wkhtmltopdf i wygląda na to, że działa, może daj Wicked_pdf strzał. Działa to doskonale dla mnie w mojej aplikacji Ruby 1.9 Rails 3. Jest to równie łatwe, ale daje trochę więcej kontroli nad tym, co można uzyskać jako plik pdf, dzięki wyraźnemu użyciu render :pdf => 'my_template', gdy chcesz mieć plik PDF. Oczywiście, możesz umieścić to wewnątrz bloku responds_to, jeśli chcesz.

ps Incase I nie było jasne, wicked_pdf również używa wkhtmltopdf.

4

Przeszukałem go w google i znalazłem odpowiedź na blogu.

Rozwiązanie jest tutaj:

Instalowanie zależności

$sudo aptitude install openssl build-essential xorg libssl-dev 

Dla 64bits OS Run jeden przez jednego z następujących poleceń:

$ sudo wget http://wkhtmltopdf.googlecode.com/files/wkhtmltopdf-0.9.9-static-amd64.tar.bz2 
$ sudo tar xvjf wkhtmltopdf-0.9.9-static-amd64.tar.bz2 
$ sudo mv wkhtmltopdf-amd64 /usr/local/bin/wkhtmltopdf 
$ sudo chmod +x /usr/local/bin/wkhtmltopdf 

Wreszcie, przejdź do szyn app/config/initializer folder i utworzyć nowy plik pdfkit.rb i wklej do niego następujący kod:

PDFKit.configure do |config| 
    config.wkhtmltopdf = '/usr/local/bin/wkhtmltopdf' if Rails.env.production? 
end 

To wszystko. Teraz Twój plik pdf zostanie pobrany. Odwiedź również, aby uzyskać dodatkowe informacje: http://www.stormconsultancy.co.uk/blog/development/generating-pdfs-in-rails-with-pdfkit-and-deploying-to-a-server/

Dzięki.