2010-08-12 11 views
5

Ich habe PDFKit in meiner Rails 3-Anwendung mit RVM eingerichtet (musste die Binärdatei wkhtmltopdf manuell kopieren). Wenn ich versuche, die PDF-Version einer Seite zu machen, bekomme ich diesen Fehler:Der Befehl Rails 3 - wkhtmltopdf ist fehlgeschlagen, wenn PDFKit zum Erstellen von PDF-Dokumenten verwendet wird

 
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", "-"] 

Die folgenden in meinem applicaition.rb ist:

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

    end 

Ideen, warum dies geschieht? wie kann ich es reparieren?

in der Konsole, bemerkte ich diese Meldung:

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

Wo ich diesen Schalter rufen Sie? wkhtmltopdf scheint auf der Kommandozeile gut zu funktionieren, ich kann etwas wie ".wkhtmltopdf http://www.google.com google.pdf" machen und ein PDF erzeugen.

Danke für Ihre Hilfe,

Peter

+0

Ich habe config.wkhtmltopdf mit absoluten Pfad versucht, den Server neu gestartet, aber habe den gleichen Fehler. – futureshocked

+0

Haben Sie den Fehler behoben? Ich habe ausführbare Dateien auf 'my_app_path/lib/wkhtmltopdf' gespeichert. Wie Sie sagten, funktioniert es vom Terminal aus. Aber funktioniert nicht, wenn ich den Webrick-Server im Produktionsmodus starte. Jede Hilfe wäre willkommen. Danke – TheMouseMan

+0

Nein, ich gab diesen Ansatz auf, da es nicht funktionierte für das, was ich versuchte, und ging stattdessen zu Prawn (https://github.com/prawnpdf/prawn). – futureshocked

Antwort

5

aus dem Quellcode zu urteilen, können Sie Optionen auf PDFKit eingestellt. Ich denke, die folgende funktioniert:

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

(ich es nicht, obwohl Test hat)

+1

Das hat so funktioniert, dass die App beim Laden einer Seite mit .pdf nicht abstürzt. Die PDF-Seite wird jedoch leer gerendert. Was könnte das verursachen? – futureshocked

+0

Ich vermute, dass 'wkhtmltopdf' fehlschlägt. Ich bin mir nicht sicher, was ich dagegen tun soll. – troelskn

1

ich diesen Hack verwendet.

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

Der Befehl gibt eine neue Zeile am Ende zurück.

0

Da du bereits wkhtmltopdf installiert hast und es scheint zu funktionieren, gib bettel_pdf vielleicht einen Schuss. Es funktioniert gut für mich in meiner Ruby 1.9 Rails 3 App. Es ist genauso einfach, aber gibt Ihnen ein wenig mehr Kontrolle darüber, was als PDF gerendert werden kann, indem Sie explizit render :pdf => 'my_template' verwenden, wenn Sie ein PDF möchten. Natürlich können Sie das auch in einen response_to-Block setzen, wenn Sie möchten.

ps Incase ich war nicht klar, wicked_pdf verwendet auch wkhtmltopdf.

4

Ich suchte es auf Google, und fand die Antwort auf einem Blog.

Lösung ist hier:

Installation Abhängigkeiten

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

Für 64bit OS Run nacheinander folgende Befehle ein:

$ 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 

Schließlich gehen app/config/initializer Ordner auf Ihre Schienen und neue Datei erstellen pdfkit.rb und fügen Sie den folgenden Code ein:

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

Das ist es. Jetzt wird Ihre PDF-Datei heruntergeladen. Besuchen Sie auch für weitere Informationen: http://www.stormconsultancy.co.uk/blog/development/generating-pdfs-in-rails-with-pdfkit-and-deploying-to-a-server/

Dank.

Verwandte Themen