1

私は SO の問題に関するすべての質問を調べ、さらに先に進むことなくすべてのトリックを試しました。

環境は開発モードの Rails 3.0.9 で、VMPlayer VM の Ubuntu 10.4 で実行されます。

apt-get を使用して wkhtmltopdf をインストールしました。バイナリは /usr/bin/ にあります。ターミナルから使用すると、バイナリは問題なく動作します。

正確なエラー メッセージは次のとおりです。

command failed: "/usr/bin/wkhtmltopdf" "--page-size" "letter" "--orientation" "landscape" "--quiet"

application.rbに次の構成セットがあります:

PDFKit.configure do |config|
  config.wkhtmltopdf = "/usr/bin/wkhtmltopdf"
  config.default_options = {
    :page_size => 'letter',
    :orientation => 'landscape'
  }

Railsコンソールで、そのエラーを生成する同じURLでPDFKit.newを作成し、それをファイルに保存すると正常に動作します。アクションのコードは次のようになります。

@url = params[:url]

@kit = PDFKit.new(Base64.decode64(@url))

@filename = "#{Time.now.strftime("%Y%m%d-%H%M%S")}owner.pdf"
@filepath = "#{Rails.root}/public/pdfs/#{@filename}"
@file = File.open(@filepath, 'w')
@kit.to_file(@file.path)
@file = File.open(@filepath, 'r') 
send_data(@file.read, :type => "pdf", :filename => @filename)

したがって、基本的に、URL は Base64 エンコーディングでエンコードされ、コントローラー アクションでデコードされます。URL のエンコード/デコード部分は問題なく動作しますが、これは問題の一部ではありません。

PDFはタイムスタンプ付きのファイルに保存され(/べきです)、ダウンロードするためにユーザーに送信されます。

アクセス許可は、この質問の回答が示唆するように設定されています。wkhtmltopdf gem を使用してみましたが、助けにはなりません。

私はこれに本当に不満を感じており、何が間違っているのか正しい方向に私を助けてくれることを非常に感謝しています.

編集: コマンド自体は正常に動作するようです。エラーメッセージからターミナルにコマンドをコピーして貼り付けたところ、機能しました。したがって、許可の問題以外の問題の理由は考えられません。チェック中...

4

0 に答える 0