2

PDF が動的に、非同期に生成され、ブラウザに直接プッシュされるシステムが必要ですが、利用できるディスク ストレージはありません。エビを使用するために resque を取得するのは簡単なようです。そのデータを取得し、最初にどこかに保存せずにブラウザーに送信します。オンラインで何も見つかりません。Faye のことを考えましたが、Faye は PDF をブラウザにプッシュすることができますか?

4

3 に答える 3

0

「PDFkit」を使用できます。サンプルコードは

def some_action
  ...
  respond_to do |format|
    format.html
    format.pdf do
      generate_pdf(file.html.haml, :css => [array of css file names that need to be added])
    end
  end
end

アプリケーションコントローラで -

def generate_pdf(template, options={})
  html = render_to_string(template, :layout => false)
  kit = PDFKit.new(html, :orientation => 'Landscape')
  kit.stylesheets << "#{Rails.root}/app/assets/stylesheets/default_css1.css"
  kit.stylesheets << "#{Rails.root}/app/assets/stylesheets/default_css2.css"

  # Add CSS
  if options[:css]
    options[:css].each do |css|
      kit.stylesheets << "#{Rails.root}/app/assets/stylesheets/#{css}.css"
    end
  end

  send_data(kit.to_pdf, :filename => 'latest.pdf', :type => 'application/pdf', :disposition => 'inline')
end
于 2012-10-06T04:02:00.220 に答える
0

以前に.netでこれを行ったことがあります.netでは、iframeのsrc属性がストリームを返すサービスに設定されています。また、このサービスは http ヘッダーを content-inline に変換して、ブラウザーがダウンロードしようとせず、代わりにインラインでレンダリングしようとするようにします。これを実行しようとしても、ブラウザーに pdf プラグインがないと機能しません (最新のプラグインには必要ですが、常に IE6 を使用している人物がいます)。似たようなことをするか、少なくとも、他の何かで書かれたサービスを対象とするページの iframe を行います。

于 2012-10-06T03:56:52.053 に答える
0

これらの PDF のサイズはどれくらいですか? データベースには BLOB 列があり (ストレージがない場合は SQLite を使用していません...)、結果の PDF をそこに保存できます。

または、結果の PDF を Redis DB に保存できます。または、S3 に保存します。

一方、ブラウザーは (ajax を使用して) 時々ポーリングして、PDF が完成したかどうかを確認し、準備が整うとすぐに PDF をダウンロードしてユーザーに表示します。

于 2012-10-06T05:54:39.453 に答える