2016-09-14 10 views
1

私のアプリではRoRを学ぶために、添付ファイルの処理方法を見ていきたいと思います。ペーパークリップを手に入れて、ドキュメントのプロパティを取得したい。ですから、どのようにしてpdfファイル(Paperclipを使用して添付)からドキュメントのプロパティ(PDF情報)を取得できますか?PDFがPaperclipで添付されています - ページのような文書のプロパティを取得する

コマンドラインを使用する方法もありますが、ファイル(ここでは@annotation.file - またはその他のオブジェクト@document.file)を取得する方法はありますか?実際には、これを行うには一時フォルダにファイルをダウンロードし、ファイルを削除してクリーンアップする必要があります。どのようにダウンロードせずに詳細を取得できますか?

したがって、このように見えるようにコントローラ:

def pdf 
    @annotation = Annotation.find(params[:id]) 
    render layout: false 
    command = 'pdfinfo @annotation.file' 
    no_of_pages = command.split("\n")[-7].split(":").last.strip 
end 

それはエラーがスローされます。

undefined method `split' for nil:NilClass

私が使用して私の注釈ビューにそれを得る:

<%= @no_of_pages %> 

その間私が見て宝石 "[pdfinfo][1]"の代わりに、これを使用する方法は?

答えて

0

簡単solutionL PDFINFOの宝石を使用するように、あなたのビューで直接変数@no_of_pagesを使用し、です。

2

gemを使用する代わりに、pdfの詳細をlinuxの組み込みコマンドを使用して取得することもできます。実行するために以下のルビコードを書くだけで、すべての詳細が得られます。例の場合:あなたがいないようにすべての詳細を取得します

def pdf 
    @annotation = Annotation.find(params[:id]) 
    command = `pdfinfo @annotation.file` 
    @no_of_pages = command.split("\n")[-7].split(":").last.strip 
    render layout: false 
end 

あなたのRubyコードでlinuxコマンドを実行するため、同様にそのコマンドを記述します。あなたのcommand変数のページ数、ファイルサイズなど。 目的の詳細を簡単に取得できます。 私はこれが助けてくれることを願っています!

UPDATE

注:pdfファイルの正確なパス、正確なディレクトリを指定します。私の場合のように:

command = `pdfinfo /home/hbiyawarwala/Documents/books/Rails-Angular-Postgres-and-Bootstrap.pdf` 

第二のものは

<%= @no_of_pages %> 
+0

erbで私は '<%= cmd =' pdfinfo @ annotation.file '%>'とするでしょうか? (ここでは 'annotation.file'はそれぞれのファイルです) –

+0

@DimitrideRuiter:コントローラの動作には、答えに与えられたコードを書いてください。取り込まれた結果には、その特定の 'pdf'に関するすべてのデータが含まれます。そのデータからあなたの情報を取得するための必要なロジックを適用して、それをあなたの 'view'だけ使用してください。 –

+0

ルビーとレールの全く新しい - okはコントローラに質問を更新します。では、pdfinfoからどのように異なるデータを取得するのですか? –

関連する問題