2

私は自分のプロジェクトの 1 つで IMGKIT を使用しており、要件を満たすために html オプションで css を使用する必要がありました。スタイルシートが次のように設定されている場合に気付きました:

kit = IMGKit.new(html, :quality => 50)
kit.stylesheets << '/path/to/css/file'

スタイルシートに相対 url('image.png') を持つ background プロパティがある場合、kit.to_file を使用してエクスポートするときに画像が生成されません。

(Rails.root + "public/pngs/" + "image.png")

リクエストがハングし、バックグラウンド URL をプロトコル、ホスト、およびポートで完全な URL に置き換えると、うまくエクスポートされます。

スタイルシート内のすべての画像への絶対 URL が必要ですか?

私は自分の development.rb ファイルで asset_host を定義しようとしました:

config.action_controller.asset_host = Proc.new { |source|
     "#{request.protocol}#{request.host_with_port}"
    }

ブラウザでチェックするとcssのURLが置き換えられますが、IMGKITを介してエクスポートすると画像が生成されません。

4

1 に答える 1

4

IMGKIT では、背景画像やその他のアセットの絶対 URL を含む css が必要でした。したがって、このリンクhttps://coderwall.com/p/exj0igといくつかの手順に従って動的に生成できます

A)すべての画像をRailsアプリのassets/imagesフォルダーに入れます

B) https://github.com/rails/sass-railsがインストールされていない場合は、gem 'sass-rails' をインストールします

C)別の css ファイル名を css_file_name.css.sccs.erb として作成します。

D)他のすべての css ファイルの内容をその中に入れます。

E) css ファイルに画像ファイル名を次のように入力します。

F)アセット パイプラインを使用する ( http://guides.rubyonrails.org/asset_pipeline.html#how-to-use-the-asset-pipeline ) 以下のコマンドをアプリ モードとして実行します: (1) 開発モード: RAILS_ENV=development bundle exec rake assets:precompile (2) Production Mode: RAILS_ENV=production bundle exec rake assets:precompile

G) config/environments/ で

(1) development.rb で config.action_controller.asset_host = "YOUR LOCAL HOST URL ie YOUR_LOCALHOST_ADDRESS"

(2) production.rb 内 config.action_controller.asset_host = " http://assets.example.com " / YOUR ADDRESS /

H)そして最後に、以下のようにスタイルシートを IMGKIT に関連付けます

html_content = "YOUR HTML CONTENT"
kit = IMGKit.new(html_content, height: 900, transparent:true, quality:10) /*YOUR SETTING*/
kit.stylesheets << "#{Rails.root}/public/assets/application.css"
file = kit.to_file(Rails.root + "public/pngs/" + "screenshot.png") /*YOUR IMAGE NAME*/
send_file("#{Rails.root}/public/pngs/screenshot.png", :filename => "screenshot.png", :type => "image/png",:disposition => 'attachment',:streaming=> 'true') /*YOUR ADDRESS WHERE U WANT TO STORE PNG FILE*/

I)サーバーを再起動してお楽しみください!!!!!

[注:すべての変更後、assets pipline コマンドを実行して、.sccs.erb 拡張ファイルから作成された最新の application.css を取得してください。]

于 2013-03-20T10:21:58.010 に答える