2011-09-01 84 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

相關問題