2011-09-01 82 views
1

我有一个在开发和当前生产服务器上正常工作的应用程序。在我的PDF中没有使用PdfKit在heroku上创建的图片

我想将其移动到免费的heroku(基本配置:1 dyno,1名工人)。

不幸的是,生成PDF(使用PdfKit)是确定的,但没有在我的CSS定义图片

我已经按照了很多技巧,包括:

的思考?


找到一个解决办法,但我仍然渴望知道一个更好的选择:

  • 我重复我的观点:一个专门用于HTML,另一个为PDF格式。

  • 我用图片并把它放在一个单独的文件中删除所有的CSS,只包含在专用于HTML

  • 最后的观点,我插在视图致力于PDF的CSS

    .foo { background-image:url(<%= Rails.root %>/public/images/bar.png) }

非常难看,但作品,请告诉我,如果你已经更好

回答

0

这是我如何回答我需要用:

  • 只是一个单一的视图文件

  • 只是一个CSS文件

诀窍是要通过适当的BASE_URL到css文件动态,因为我预计PDF或HTML。我决定使用LESS。 Style以不同的方式编译css,给出了我在DOM中提供的基础URL。这个base-url是由一个助手生成的。


这里是我的步骤:

  • 改变了我的style.cssstyle.less

  • 添加到我的观点:

<%= stylesheet_link_tag "style.less", :rel => "stylesheet/less" %> 

<script id="base_url" type="text/javascript" data="<%= assets_path %>"></script> 

<%= javascript_include_tag "less.min.js" %> 
  • 在我的帮助:
def assets_path 
    if request.fullpath.include? ".pdf" 
     "#{Rails.root.join('public',"images","pictos")}" 
    else 
     "#{request.protocol}#{request.host_with_port}/images/pictos" 
    end 
    end 
  • ,在我style.less
@base_url: `document.getElementById('base_url').getAttribute('data')`; 

.foo { background-image:~"url(@{base_url}/bar.png)" } 
0

这可能是在css中指定url的方式的一个问题。我记得,它们应该是文件系统的绝对路径。你的CSS看起来像什么?

+0

好吧,绝对路径将不会在dev和prod中相同,所以我需要至少2个css文件,这是不可接受的或比我目前的工作更好 – apneadiving

+0

用rails生成css,以便您可以包含调用Rails.root的路径 – jcnnghm

相关问题