2014-05-24 2 views
0

그래서 Wicked_pdf를 사용하고 있으며 pdfkit도 사용해 보았습니다.wicked_pdf와 Rails는 @import와 함께 CSS를로드하지 않습니다

둘 다 동일한 문제가 있습니다. 즉, 부트 스트랩의 일부를 가져 오는 스타일 시트를 참조 할 때 pdf 변환이 실패합니다.

내가 내 컨트롤러

html = render_to_string(partial: "users/direct_deposit_info.html", layout: "layouts/pdf") 
UserMailer.send_email(current_user.email,'Direct Deposit Information',content, html) 

을에 뭘하는지입니다 그리고이 일을 파괴하고 실패의 원인이 유지 스타일 시트에 무엇이입니다 : 를이 내 print.css.scss된다

@import 'bootstrap/variables'; 
@import 'bootstrap/print'; 
@import 'general'; 

이것은 내 레이아웃/pdf에서 수행하고있는 작업입니다. '인쇄'스타일 시트에 대한 참조를 제거하면 pdf로 변환되고 pdf가 완전히 스타일 화되지 않은 것을 제외하고는 모든 것이 잘 작동합니다. 내가의 '인쇄'참조를 유지하는 경우, 그것은

<%= wicked_pdf_stylesheet_link_tag "fonts" %> 
<%= wicked_pdf_stylesheet_link_tag "print" %> 
<%= wicked_pdf_stylesheet_link_tag "application/direct_deposit_check" %> 

나누기 그리고 이것은 내가 오류입니다 : 그래서 제 질문은, 레일에서 얻을 수있는 방법이

Failed to execute: 
"/Users/bdog/.rvm/gems/ruby-1.9.3-p448/bin/wkhtmltopdf" -q     
"file:////var/folders/cn/9n6mzxt52d1c5j2lt3868rkr0000gn/T/wicked_pdf20140524-51775-1bjnzku.html"  
"/var/folders/cn/9n6mzxt52d1c5j2lt3868rkr0000gn/T/wicked_pdf_generated_file20140524-51775- 1ysvtz9.pdf" 
Error: PDF could not be generated! 
Command Error: 

가되어

이 수입에서 CSS를 내 html에 놀라게하지 않고?

내 general.css 파일이 부트 스트랩 파일에 포함 된 변수에 액세스 할 수 있도록 부트 스트랩 인쇄 및 변수 CSS가 필요합니다.

편집 내가 'print.css.scss'에 대한 일반 레일 스타일 시트 링크 태그를 추가하면이 내 렌더링 된 HTML 파일에 무엇을 얻을 수 있습니다 :

<link href="//localhost:3000/assets/print.css?body=1" media="screen" rel="stylesheet" type="text/css" /> 

나는 wicked_pdf_stylsheet_link_tag를 사용하는 경우 "인쇄 "그럼 같은 오류가 발생하고 렌더링 된 HTML 파일에는 링크 참조 또는 아무 것도 없습니다.

+0

마찬가지로 내 'print.css.scss'를 렌더링하는 방법이 있습니다. 이렇게하면 가져 오기가 문자열이나 파일로 렌더링되는 모든 CSS를 얻을 수 있습니다. HTML? 나는 수입의 전체적인 목적이 분명히 작동하지 않는다는 것을 알고있다. – Ldrbrandon

+0

sass-rails gem과'@import 'bootstrap/print';와 함께 나를 위해 일한다 print css에 커스텀이 있는가? – Unixmonkey

+0

흠은 아직 작동하지 않습니다. 그리고, 아니, 관습은 없습니다. 말 그대로 수입으로 시작하는 세 줄입니다. 나는 항상 내 기록에서 이것을 얻고 그 후에 멈춘다. '2194.6ms에서 200 OK 완료 (조회수 : 0.4ms | ActiveRecord : 0.9ms) "************** \"/ Users/bdog/.rvm/gems/ruby- 1.9.3-p448/bin/wkhtmltopdf \ "-q \"파일 : ////var/folders/cn/9n6mzxt52d1c5j2lt3868rkr0000gn/T/wicked_pdf20140527-54509-vq5gz.html \ "\"/ var/folders/cn/9n6mzxt52d1c5j2lt3868rkr0000gn /T/wicked_pdf_generated_file20140527-54509-1jmlyev.pdf \ "**************" " – Ldrbrandon

답변

0

오케이 좋은 소식이지만 여전히 상황을 이해하지 못합니다. 링크가 제대로 렌더링되는 것으로 나타났습니다.

<style type='text/css'> 
<%= raw Consumer::Application.assets.find_asset('fonts.css.scss').body %> 
<%= raw Consumer::Application.assets.find_asset('print.css.scss').body %> 
<%= raw Consumer::Application.assets.find_asset('application/direct_deposit_check.css.scss').body %> 

을 그리고 파일로 내 렌더링 된 HTML을 저장하고 브라우저에서 열 때, 나는 실제로받을 수 있나요 : 내 _pdf.html.erb 레이아웃 파일에서 그래서 같은 stylsheets 연결 내가 찾고있는 적절한 스타일의 페이지. 그러나, 페이지가 이메일에 있어야하기 때문에, 이전에 설명한 것처럼 내 서버가 여전히 멈추기 때문에 실제로 보내지지 않습니다.

렌더링 된 HTML 전자 메일을 파일로 저장 한 다음 해당 파일을 pdf로 변환하고 해당 pdf를 파일로 저장하고 있기 때문에 원본 html이 렌더링되고 저장되지만 pdf는 저장되지 않는다는 것을 발견했습니다. 't 그래서 내가 문제가있는 줄을 내 컨트롤러 내 PDF 파일을 생성하는 라인이 있으리라 믿고있어이 :

File.delete("#{Rails.root.to_s}/tmp/dd_raw.html") if File.exist?("#{Rails.root.to_s}/tmp/dd_raw.html")  
File.write("#{Rails.root.to_s}/tmp/dd_raw.html", attach) 

# Create new pdf from string 
kit = WickedPdf.new.pdf_from_string(attach) 

# save to file 
file_path = "#{Rails.root.to_s}/tmp/direct_deposit_info.pdf" 
File.delete(file_path) if File.exist?(file_path) 

File.open(file_path, 'wb') do |file| 
    file << kit 
end 
(변수를 첨부 내 첫 번째 게시물 render_to_string(partial: "users/direct_deposit_info.html", layout: "layouts/pdf") 렌더링 원시 HTML 파일입니다)

EDIT

또한 명령 줄에서 wkhtmltopdf 명령을 실행하고 --ignore-load-errors를 no로 사용했습니다. 사용할 수 있습니다. 그것은 빈 PDF를 렌더링. 나는 다음을 얻었습니다 : Warning: Failed loading page http: (ignored) 그것이 내 글꼴 CSS에서 URL을 참조하는 것과 관련이 있다고 상상합니다. 다음과 같습니다 : src: url(http://localhost:3000/assets/metric-thin.eot);

+0

개발중인 동일한 응용 프로그램에 대한 URL을 참조하면 대부분의 개발자가 서버를 종료 할 때 무한 정지가 발생할 수 있습니다. 한 번에 하나의 요청 만 제공 할 수 있습니다. 첫 번째 요청을 수행하는 동안 요청을 처리하는 데 필요한 것을 수집하기 위해 중지하고 기다리지 만 요청을 완전히 채우려면 다른 요청을해야합니다.이 요청은 차단됩니다. – Unixmonkey

+0

아 좋아,이 문제를 해결할 수있는 해결책이 있습니까? 현재이 작업을 수행하고 있습니다 :'@ font-face { font-family : 'Metric'; font-style : normal; font-weight : 100; src : url (http : // localhost : 3000/assets/metric-thin.eot); url (http : // localhost : 3000/assets/metric-thin.woff) 형식 : src/url (http : // localhost : 3000/assets/metric-thin.eot) 형식 ("embedded-opentype" "http : // localhost : 3000/assets/metric-thin.ttf) 형식 ("truetype "), url (http : // localhost : 3000/assets/metric-thin.svg # Metric) 형식 ("svg"); }' – Ldrbrandon

+0

'url ('/ Users/Ldrbrandon/code/my_app/app/assets/metric-thin.woff')와 같은 전체 시스템 경로가 작동합니까? – Unixmonkey

관련 문제