heroku – Wicked_PDF无法在生产中呈现通过Asset Sync托管的HTML和CSS资产

heroku – Wicked_PDF无法在生产中呈现通过Asset Sync托管的HTML和CSS资产,第1张

概述我在使用Wicked_PDF渲染PDF时遇到问题.我正在使用Amazon S3和CloudFront托管我的所有资产管道资源,并且在开发过程中生成的东西很好;但是在生产中, HTML和CSS资产不会在生成的PDF中呈现. 我正在运行Rails 3.2.11,Ruby 1.9.3p327,MAC OSX 10.8.2,wkhtmltopdf 0.9.9,以及当前版本的Wicked_PDF和wkhtm 我在使用Wicked_pdf渲染pdf时遇到问题.我正在使用Amazon S3和CloudFront托管我的所有资产管道资源,并且在开发过程中生成的东西很好;但是在生产中,HTML和CSS资产不会在生成的pdf中呈现.

我正在运行Rails 3.2.11,Ruby 1.9.3p327,MAC OSX 10.8.2,wkHTMLtopdf 0.9.9,以及当前版本的Wicked_pdf和wkHTMLtopdf-heroku.

以下是所有相关信息:

Heroku日志:

2013-04-21T14:13:19.482011+00:00 app[web.1]: Completed 302 Found in 212ms (ActiveRecord: 205.6ms)2013-04-21T14:13:19.584108+00:00 app[web.1]: Started GET "/office/download/7" for ip_address at 2013-04-21 14:13:19 +00002013-04-21T14:13:21.551581+00:00 app[web.1]: Processing by OfficesController#show_pdf as HTML2013-04-21T14:13:21.551581+00:00 app[web.1]: ***************WICKED***************2013-04-21T14:13:21.551581+00:00 app[web.1]:   Parameters: {"office_ID"=>"7"}2013-04-21T14:13:21.551581+00:00 app[web.1]:   Rendered appointments/forms/_office.pdf.HTML.erb within layouts/pdf.HTML (13.6ms)2013-04-21T14:13:21.551581+00:00 app[web.1]:   Rendered text template (0.0ms)2013-04-21T14:13:21.551581+00:00 app[web.1]: Sent data Office.pdf (42.2ms)2013-04-21T14:13:21.551581+00:00 app[web.1]: Completed 200 OK in 1961ms (VIEws: 41.9ms | ActiveRecord: 7.8ms)2013-04-21T14:13:21.554211+00:00 heroku[router]: at=info method=GET path=/office/download/7         host=www.foobar.com fwd="ip_address" dyno=web.1 connect=1ms service=1971ms status=200 bytes=22019

路线:

# => Route that generates the pdfget "/office/download/:office_ID" => 'offices#show_pdf'

控制器:

# => app/controllers/offices_controller.rbdef show_pdf  @office = Office.find_by_ID(params[:office_ID])  abrv = @office.abrv  partial = "appointments/forms/_#{abrv}"  @format = "pdf"  respond_to do |format|    format.pdf do      render :pdf => "#{@office.name}",:template => "#{partial}.pdf.HTML.erb",:layout => "pdf.HTML",:page_size => "A4",:enCoding => "UTF-8",:show_as_HTML => params[:deBUG].present?     end  endend

视图:

# => app/vIEws/offices/index<div>  # List of all offices</div># pdf partials for each office<%= render 'appointments/forms/office.pdf.HTML.erb' %><%= render 'appointments/forms/office_1.pdf.HTML.erb' %>...

pdf模板:

# => app/vIEws/appointments/forms/_office.pdf.HTML.erb:<% if @format != 'pdf' %>  <%= stylesheet_link_tag 'office' # => .CSS.sCSS.erb %><% else %>  <%= wicked_pdf_stylesheet_link_tag 'office' # => .CSS.sCSS.erb %><% end %><div >  <p>bar</p></div>

CSS:

# => app/assets/stylesheets/office.CSS.sCSS.erb.pdf_styling {  background-image: url('https://s3.amazonaws.com/foo/assets/pdf_background_image.jpg');  wIDth: 100%;  height: 100%;  p {    position: absolute;    left: 100px;    right: 100px;  }}

Wicked_pdf初始化程序:

# => config/initializers/wicked_pdf.rbWICKED_pdf = {  :wkHTMLtopdf => (Rails.env.test? || Rails.env.development? ? '/usr/local/bin/wkHTMLtopdf' : Rails.root.join('bin','wkHTMLtopdf-amd64').to_s),:exe_path => (Rails.env.test? || Rails.env.development? ? '/usr/local/bin/ ' : Rails.root.join('vendor','bin','wkHTMLtopdf-amd64').to_s)}

的Gemfile:

# pdf Gemgem 'wicked_pdf'# pdf to HTML utilitygem 'wkHTMLtopdf-binary'# pdf on herokugroup :production do  gem "wkHTMLtopdf-heroku",:git => 'git://github.com/camdez/wkHTMLtopdf-heroku.git'  gem 'thin'end# Asset Pipeline Optimizationgem "asset_sync"

同样,一切都在开发中运行良好,但我只是在生产中得到一个空白的pdf页面.日志中不会引发任何错误.这可能是一个有太少dynos的问题吗?

我承认这是所有这一切的n00b;原谅我.谢谢.

解决方法 在Heroku中部署到生产时我遇到了同样的问题.

要解决的两个可能的方面……首先,必须将每个JavaScript或CSS资源文件指定为绝对URL,而不仅仅是您在模板代码中指定的URL.如果您在其他地方引用了任何Js / CSS文件,则还必须以绝对形式指定这些文件.因此,您还需要查看您的pdf布局文件

其次(这就是我在Heroku上的诀窍),我最后必须在config / application.rb中指定我的每个资源,如下所示:

config.assets.precompile += ['blueprint/screen.CSS','jquery.timepicker.CSS','pdf.CSS','jquery.ui.datepicker.Js','pdf.Js','jquery.autosize.Js','jquery.timepicker.Js']

我不确定为什么第二步是必需的,但没有它,Heroku上没有任何工作:我得到了相同的空白pdf,没有你报告的错误,甚至认为一切都在开发中.我的经验是,如果存在资源问题,wkHTMLtopdf将无声地失败.我写了关于问题here的博客,并推动了对Wickedpdf README文档的更新,这可能会有所帮助.

总结

以上是内存溢出为你收集整理的heroku – Wicked_PDF无法在生产中呈现通过Asset Sync托管的HTML和CSS资产全部内容,希望文章能够帮你解决heroku – Wicked_PDF无法在生产中呈现通过Asset Sync托管的HTML和CSS资产所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1063684.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存