バックグラウンド
読んだ後、Prawnが出て、wkhtmltopdfが入っているように見えました。また、Rails用のPDFKitとwicked_pdfの宝石が新しいクールなようです。そこで、PDFKitの使用方法に関するRyanのスクリーンキャストを見つけました。私はすべてをインストールし、問題なくCLIでwkhtmltopdfをテストし、Rails設定をいじって複数のプロセスを実行し、アセットパイプラインが機能するようにしました。プロセスの最後で立ち往生している(実際にはPDFを取得している)ことを除けば、すべて問題ないようです。サーバーからの応答)。
質問
ビューのバージョンを要求すると.pdf(PDFKitミドルウェアオプションを使用しています)、ブラウザーは応答を待つだけですが、Railsプロセスを強制終了するとすぐに、取得する予定のPDFがブラウザーにポップアップ表示されます。窓。何が得られますか?
私が使用しているもの
- OS:OSX 10.8.1
- レール:3.2.8
- Ruby:1.9.3
- wkhtmltopdf:0.11.0_rc1(実行
wkhtmltopdf -Vすると0.10.0_rc2と表示されますが) - qt:4.8.2
私がしたこと
config.middleware.use "PDFKit::Middleware"私のapplication.rbファイルにロードしてPDFKitミドルウェアを使用しました。gem 'pdfkit'私のGemfileに含まれていて、Bundlerでインストールしました- 初期化子で
.pdfmime-typeを次のように設定しますmime_types.rbMime::Type.register_alias "application/pdf", :pdf - アセットパイプラインがPDFエンジンと競合しないように、複数のスレッドに追加されまし
config.threadsafe!たconfig/environments/development.rb - テスト
wkhtmltopdf http://www.google.com google.pdfし、期待どおりにGoogleホームページのPDFを生成しました - PDFKitをwicked_pdfに交換しようとしましたが、同じ問題が発生しました(ハングしますが、Railsプロセスが強制終了されると、PDFは期待どおりにレンダリングされます)
それはどのようなものか
これは、Railsによってレンダリングされた通常のhtmlページです(クライアントの詳細をぼかしました):

これは、に移動しようとしたときにRailsによって出力されるCLIlocalhost:3000/some/path.pdfです。(応答を待っている間、アプリがハングします):

最終的にRailsプロセスを強制終了するとctrl-c、PDFが期待どおりにブラウザに表示されます(CSSとHTMLが適切にレンダリングされているため、アセットは正常に読み込まれるようです)。

これまでの結論
PDFKitをwicked_pdfと交換して同じ結果を得ると、問題はそれらのライブラリにあるのではなく、開発環境に関係していると思われるようです。しかし、wkhtmltopdfはコマンドラインから正常に実行されるため、wkhtmltopdfとQTがそれぞれの仕事をしていると思います。問題はRailsにあるはずです。たぶん私は何かを正しく構成していませんか?
助けを求める
問題が正確に何であるかをどのように判断し、どのように修正しますか?
あなたが私を助けることができれば私はあなたを愛します<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