周りを読んだ後、 Prawn が出ていて、 wkhtmltopdf が入っているように思えました。また、 PDFKit と wicked_pdf Railsのgemが新しいクールです。だから私は PDFKit の使い方の Ryan によるスクリーンキャストを見つけました。私はすべてをインストールし、CLIでwkhtmltopdfを問題なくテストし、Rails設定をいじって複数のプロセスを実行してアセットパイプラインが機能するようにしましたが、すべてが問題なく終了しましたが、プロセス(実際にはサーバーからPDF応答を取得)。
ビューの.pdf
バージョンを要求すると(PDFKitミドルウェアオプションを使用しています)、ブラウザは応答を待っているだけですが、Rails PDFを処理します。ブラウザウィンドウにポップアップが表示されて初めて表示されます。何ができますか?
wkhtmltopdf -V
を実行すると0.10.0_rc2と表示されます)config.middleware.use "PDFKit::Middleware"
ファイルにapplication.rb
をロードしてPDFKitミドルウェアを使用しました。gem 'pdfkit'
を含め、Bundlerでインストールしました.pdf
初期化子でmime_types.rb
mime-typeをMime::Type.register_alias "application/pdf", :pdf
で設定しますconfig.threadsafe!
にconfig/environments/development.rb
を追加して、アセットパイプラインがPDFエンジンと競合しないようにしましたwkhtmltopdf http://www.google.com google.pdf
をテストし、期待どおりにGoogleホームページのPDFを生成しましたこれは、Railsによってレンダリングされた通常のHTMLページです(クライアントの詳細をぼかしました)。
これは、localhost:3000/some/path.pdf
に移動しようとしたときのRailsによるCLI出力です。 (アプリは応答を待っている間にハングします):
ctrl-c
を使用してRailsプロセスを最後に強制終了すると、予期したとおりにPDFが最終的にブラウザーに表示されます(CSSとHTMLが適切にレンダリングされるため、アセットは正常に読み込まれるようです)。
PDFKitをwicked_pdfと入れ替えて同じ結果を得ると、問題はそれらのライブラリにあるのではなく、私の開発環境に関係しているように思えます。しかし、wkhtmltopdfはコマンドラインから正常に実行されるため、QTとQTがうまく機能していると思います。問題はRailsにあるはずです。多分私は何かを正しく設定していませんか?
whatを正確に判断するにはどうすればよいですか?
あなたが私を助けることができれば私はあなたを愛します<3
次のように、ミドルウェアオプションなしでPDF(.to_pdf
を使用)をレンダリングする別の方法も試してみました(これを行うと、config.middleware.use "PDFKit::Middleware"
ファイルからapplication.rb
をコメントアウトしました)。
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
問題はwkhtmltopdf自体、特に0.9.9以降のバージョンにあります。コマンドラインから直接実行すると、wkhtmltopdfがハングします。
修正する手順:
brew uninstall wkhtmltopdf
cd /usr/local/Library/Formula/
git checkout 6e2d550 /usr/local/Library/Formula/wkhtmltopdf.rb
brew install wkhtmltopdf
次に、正しいバージョンがインストールされていることを確認しますwkhtmltopdf --version
はwkhtmltopdf 0.9.9
引用:
最後のバージョンを試してください。 MacOSへの簡単なインストール方法:
brew install Caskroom/cask/wkhtmltopdf
scarver2 による修正は、宣伝どおりに機能しました。しかし、wkhtmltopdf
のより新しいバージョンが必要でした。自作バージョンはまだ古くなっているようです(まだコマンドラインでハングします)。また、最近コンパイルされたバイナリが利用できないため、os xビルドスクリプトを使用して自分でコンパイルしました。
$ git clone [email protected]:wkhtmltopdf/wkhtmltopdf.git
$ cd wkhtmltopdf
$ ./build_osx.sh # i'm running 10.9.2
$ bin/wkhtmltopdf --version
Name:
wkhtmltopdf 0.12.1-72a9f2066fe9ffd162dec007a4d9b6a5cd63b670
$ curl www.example.com | bin/wkhtmltopdf - test.pdf # render pdf of example.com
$ open test.pdf # to confirm pdf
pdfkit 0.6.2
をRails 3.2.17
とともに使用しています。バイナリを/vendor
に入れ、pdfkit
イニシャライザでconfig.wkhtmltopdf
を使用してポイントしました。ここまでは順調ですね。
同じ問題が発生しました。追加したときに機能します: 'config.threadsafe!' スタック の答えとしてapplication.rbに。この助けを願っています。
まったく同じ症状ですが、現在WickedPdf
を使用しています。この時点で、問題はwkhtmltopdf
にもあると思います。
残念ながら、私がStack/Googleで見つけた推奨事項はどちらもうまくいきませんでした。代わりに、この投稿にあるものを含め、いくつかの提案を組み合わせる必要がありました。
解決策は:
brew uninstall wkhtmltopdf
/usr/bin
のwkhtmltopdf
のコピーを見つけて削除しますWickedPdf.config
行config/initializers
config.threadsafe!
をdevelopment.rb
に追加wkhtmltopdf-binary
をgemfileに追加Mime::Type.register_alias "application/pdf", :pdf
をconfig/initializers/mime_types.rb
に追加する必要がある場合もあります(私にとっては、これにより '警告:すでに初期化された定数PDF'が発生します)私のセットアップは:Rails 3.2.1、Webrick、Postgresおよびwkhtmltopdf-binary(0.9.9.1)を使用したMac OSX Mountain Lionでした。
私もぶら下がっていてドックのwkhtmltopdfアイコンを開いていました。
私が実際に問題を見つけたのは、実行しているUnicornワーカープロセスが1つだけだったからです。 1つ以上追加すると、問題なく動作しました。
OS Xでpdfkit 0.6.2を使用してwkhtmltopdf 0.9.9を実行しています