2016-12-02 19 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ドキュメントに何かを足すされていませんか?

+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はコーディング/デコードがうまくいくように見えても開くことができません –

関連する問題