2016-12-02 8 views
-3

rails db 항목에서 PDF 바이너리 데이터를 검색하여 PDF 형식으로 출력하려면 어떻게해야합니까? 이것은 내가 지금까지 뭘 찾았는지,하지만 이것은 단지 표시하고 비어있는 PDF 파일입니다 이진 열의 항목을 RAILS의 .pdf 파일로 변환했습니다.

def download 
    @submissions = Submission.all 

    # Create .pdf from binaries 
    @submissions.each do |sub| 
     @filePath = Rails.root.join('tmp/system/', sub.id.to_s, sub.file_file_name) 
     logger.error('Filepath here: ' + @filePath.to_s) 
     @content = Attachment.find_by! submission_id: 174 
     File.open(@filePath.to_s, 'w:binary') do |out| 
      out.write(@content.file_contents) 
     end 
    end 

왜이 PDF 문서에 아무것도을 writting되지 않는 이유는 무엇입니까?

+0

"[mcve]" "[질문]"를 읽어주세요. 우리가하는 일에 대해 더 많은 정보가 필요합니다. 이것을 해결하기 위해 작성한 최소한의 코드를 보여주십시오. 아무 것도 쓰지 않았다면 http://meta.stackoverflow.com/questions/261592가 적용됩니다. 바이너리 데이터 외에도'file_content'에 무엇이 있습니까? PDF 파일? –

+0

나는 그 질문이 아주 명백하다고 생각한다. 이런 종류의 질문에 더 많은 정보가 필요하지 않습니다. –

답변

0

답변 :

# Download zip file of all submission 
    def download 
    @submissions = Submission.all 

    # Create .pdf from binaries 
    @submissions.each do |sub| 
     @filePath = Rails.root.join('tmp/system/', sub.id.to_s) 
     Dir.mkdir(@filePath.to_s) 
     @content = Attachment.find_by! submission_id: sub.id 
     File.open((@filePath.to_s + '/' + sub.file_file_name.to_s), 'w+b') do |out| 
      out.write(@content.file_contents) 
     end 
    end 
end 
0

일반적으로 당신은 단지 그것을 쓸 수 있습니다 : 당신이 진정으로 임시 파일을 필요로하는 경우 명심

File.open('/tmp/whatever.pdf', 'w:binary') do |out| 
    out.write(model.file_content) 
end 

Tempfile를 사용

do_something_with_pdf(file.path) 
:

file = Tempfile.new 
file.write(model.file_content) 
file.close 

이 파일을 사용하려면

마쳤 으면 다음을 제거하십시오.

여기
file.unlink 
+0

답장을 보내 주셔서 대단히 감사합니다. @tadman. 정말 감사합니다. 불행하게도 나는 월요일까지 이것을 시도 할 수 없다. 그러나 나는 나의 대답을 여기에 게시 할 것이다. 다행히 당신의 제안이 효과가있을 것으로 기대합니다. 고마워요! –

+0

위의 업데이트 된 질문을 참조하십시오. 이것은 pdf를 제대로 디코딩하지 못하고 있지만 불행히도 pdf는 열 수 없습니다. 코딩/디코딩이 괜찮은 것 같지만 –