1

Windows上のRails3アプリケーションには、次のページがあり、ジョブの領収書が表示され、ユーザーがそれを編集できるようになっています。

http://localhost:3001/jobs/45/invoice

ページの下部に[PDFの作成]ボタンもあります。押されたときcreate_pdf_invoice、私のJobsControllerは呼ばれます:

def create_pdf_invoice
    job = Job.find(params[:id])

    kit = PDFKit.new("<h1>Hello</h1><p>This is PDF!!!</p>", :page_size => "A4")
    file = kit.to_file("my_file_name.pdf")

    redirect_to(:action => 'index')
  end
end

これはすべて正常に機能します。つまり、PDFが作成されます。

私の質問は、この静的なテキストではなく、請求書自体を印刷するにはどうすればよいですか(http://localhost:3001/jobs/45/invoiceページで[印刷]を押した場合など)?


アップデート

入れてみました

require 'pdfkit'

config.middleware.use PDFKit::Middleware

ここconfig/application.rb提案されているように。

サーバーは正常に起動しますが、

http://localhost:3001/jobs/45/invoice.pdf

Rubyがクラッシュします:

ここに画像の説明を入力してください

私が使う:

ruby 1.9.2p0 (2010-08-18) [i386-mingw32]
Rails 3.0.1
rake, version 0.8.7
pdfkit (0.5.0)

何か案は ?

4

2 に答える 2

2

PDFKitミドルウェアの助けを借りて、ブラウザでpdf形式のhtmlページのみを表示できます。ダウンロードプロンプトを表示したい場合は、アクションにヘッダーを設定する必要があります。

headers ["Content-Disposition"] = "attachment; filename = export"

さらに、PDFファイルをサーバーに保存したい場合は、このリンクを試すことができます。

PDFKitミドルウェアによって表示されるPDFファイルを保存します

于 2011-03-03T09:46:12.857 に答える
2

まず、ミドルウェアとしてpdfkitを使用するようにアプリケーションに指示する必要があります。

したがって、イニシャライザのどこかに次のように配置する必要があります。

# PDFKit
require 'pdfkit'
middleware.use PDFKit::Middleware

PDFKit.configure do |config|
  config.wkhtmltopdf = 'windows_path_to_wkhtmltopdf'
end

この後電話すれば

http://localhost:3001/jobs/45/invoice.pdf

pdfが生成されます。

PDFkitは、それに応じてページをレンダリングするpdf形式をインターセプトするミドルウェアです。

必要に応じて、正規表現または文字列を使用して、構成内のpdf可能なルートを制限することもできます。

ただし、ページに画像がある場合は、絶対パスを使用して呼び出す必要があります。

pdfkit 0.5.0でもいくつかの問題が見つかりましたが、バージョン0.4.6では問題なく動作しています。これはパスに関係しているため、問題を解決できる可能性があります。

于 2011-03-03T07:55:44.260 に答える