2011-09-23 1 views
2

나는 이것을 tutorial에 따르려고합니다.레일 3 및 PDFkit

내 URL에 .pdf을 추가하면 아무 효과가 없습니다. 내 컨트롤러의 내용 :

respond_to :html, :pdf. 

내 마임 유형이 선언되었습니다.

respond_to do |format| 
    format.html 
    format.pdf { 
    html = render_to_string(:layout => false , :action => "www.google.fr") 
    kit = PDFKit.new(html) 
    send_data(kit.to_pdf, :filename => "candidats.pdf", :type => 'application/pdf') 
    return # to avoid double render call 
    } 
end 

을했지만 작동하지 않습니다 나는 오류를 얻을하지 않습니다

나도이 시도. 내 브라우저는 localhost를 기다리지 만 아무 일도 일어나지 않습니다.

그럼 어떻게 pdfkit을 사용해야합니까?

편집 2 : 내 레일 '기록에 따르면

는 레일 성공적으로 HTML을 렌더링합니다. 나는 .log에서 이것을 보았고, 레일은 그것을 webrick이나 브라우저에 보내지 않았습니다. 그리고 내 브라우저는 계속 기다리고 기다리지 만 아무 일도 일어나지 않습니다. 나는 여기에 작은 그림 만 갖고있다.

편집 3 : 내 URL의 .pdf 버전을 받기 시작하면 내 webrick 서버가 다른 요청에 응답 할 수없는 것처럼 보입니다.

편집 4 :

내가 사용하고 레일 3.1, wkhtmltopdf 0.9.5 (Windows 설치) 및 pdfkit 내가 솔루션의 일부를 가지고 다른 스택 오버플로 대답 0.5.2

+0

죄송합니다. 문제를 해결할 수 없지만 pdfkit을 소개해 주셔서 감사합니다. 항상 새우가 좋은 것으로 생각했다. –

+0

게시 한 코드와 링크 한 자습서에 표시된 코드 사이에는 다소 큰 불일치가 있습니다. 튜토리얼을 따르고 있습니까? –

답변

6

개발 모드에서도 내 .pdf URL에 액세스하는 더 좋은 방법을 찾았습니다.

# Enable threaded mode 
config.threadsafe! 

# Code is not reloaded between requests 
#config.cache_classes = true 

Config.cache_classes는 주석입니다. 그렇지 않은 경우 몇 가지 문제점이 있습니다. 이 방법으로 pdfkit은 레일 3.1에서도 놀라운 기능을합니다. 그러나 요청간에 코드를 다시로드하지 마십시오.

이것은 실제로 문제가되지 않습니다. pdf 결과를 확인하려면 구성을 전환해야합니다.이렇게하면 프로덕션 데이터베이스에 대해 신경 쓸 필요가 없습니다.

+0

이 설정을 개발 모드로 설정하면 작업이 수행되지만 프로덕션에서 작동하게하려면 어떻게해야합니까 (heroku를 사용합니까?). 프로덕션 환경에서'config.threadsafe! '플래그를 설정하면 작업 시간이 초과됩니다. – Tonys

+0

나는 heroku를 사용하지 않고있다. 그것은 생산 과정에서 완벽하게 작동합니다. (하지만 나는 여전히 현지에있다.) 이것은 당신을 도울지도 모른다 : http://jguimont.com/post/2627758108/pdfkit-and-its-middleware-on-heroku. 나는 tryied하지 않았다. – perello

3

감사합니다.

이 작동 :

html = '<html><body>Toto de combats</body></html>' 
@pdf = PDFKit.new(html) 

send_data @pdf.to_pdf, :filename => "whatever.pdf", 
        :type => "application/pdf", 
        :disposition => "attachement" 

당신은 inline,에 의해 attachement이 때문에 PDF가 브라우저에 표시됩니다 대체 할 수 있습니다.

스택 오버플로 답변에서 나는 (링크가 기억 나지 않는다) .to_pdf이 누락되었지만 필수 항목입니다. 그렇지 않으면 PDF 리더가 인식하지 못합니다.

나는이 작업을 .pdf URL로 얻으려고하고있다.

편집 3 :

.pdf urls의 문제점이 해결되었습니다. 레일 3.1에서 알려진 문제가 있지만 Google에서 찾을 수 없습니다.

설명 : explanation

해결 (아직 tryied하지 않았다). workaround