8

私はpdfファイルをダウンロードすることができます:

curl google.com | wkhtmltopdf - test.pdf

つまり、wkhtmlpdf のインストールは成功しました。

しかし、アクセスしてpdfファイルを生成しようとするhttp://localhost:3000/contacts/1.pdfとハングします。ステータス バーには次のように表示されます。Waiting for localhost...

Rails サーバーの出力:

Started GET "/contacts/1.pdf" for 127.0.0.1 at 2013-07-28 21:45:06 +0900
  ActiveRecord::SchemaMigration Load (0.1ms)  SELECT "schema_migrations".* FROM "schema_migrations"
Processing by ContactsController#show as HTML
  Parameters: {"id"=>"1"}
  Contact Load (0.3ms)  SELECT "contacts".* FROM "contacts" WHERE "contacts"."id" = ? LIMIT 1  [["id", "1"]]
  Rendered contacts/show.html.erb within layouts/application (1.4ms)
Completed 200 OK in 99ms (Views: 57.0ms | ActiveRecord: 0.7ms)

Gemfile:

gem 'pdfkit'

アプリケーション.rb:

config.middleware.use "PDFKit::Middleware"

PDFKit railscastによると、これは、追加するだけで pdf ファイルを生成するのに十分なはず.pdfです...


アップデート:

show.html.erb:

<p id="notice"><%= notice %></p>

<p>
  <strong>Name:</strong>
  <%= @contact.name %>
</p>

<p>
  <strong>Age:</strong>
  <%= @contact.age %>
</p>

<%= link_to 'Edit', edit_contact_path(@contact) %> |
<%= link_to 'Back', contacts_path %>

レイアウト/application.html.erb:

<!DOCTYPE html>
<html>
<head>
  <title>Pdftest</title>
  <%= stylesheet_link_tag    "application", media: "all", "data-turbolinks-track" => true %>
  <%= javascript_include_tag "application", "data-turbolinks-track" => true %>
  <%= csrf_meta_tags %>
</head>
<body>

<%= yield %>

</body>
</html>

更新 2:

アセットの相対パスではなく絶対パスを指定する必要があることを理解するのを手伝ってくれた@Arman Hに感謝します。次の行を削除すると、PDF ファイルを生成できました。

<%= stylesheet_link_tag    "application", media: "all", "data-turbolinks-track" => true %>
<%= javascript_include_tag "application", "data-turbolinks-track" => true %>

今、これを絶対パスに置き換える方法がわかりません。この投稿は私が必要としているもののようですが、これが私の場合にどのように見えるかはまだわかりません。

4

3 に答える 3

3

development.rb での設定config.action_controller.asset_host = "http://localhost" は、実際にはうまくいきませんでした。つまり、PDF の生成は機能しますが、HTML のレンダリング時にアセットが取得されません。

ここの方法に従いました:http://jguimont.com/post/2627758108/pdfkit-and-its-middleware-on-heroku

それは私にとって魅力のように機能しました。これが誰かに役立つことを願っています。assets.rb を config/initializers に入れるだけで準備完了です。

于 2014-04-04T04:25:32.860 に答える