しかし、ドキュメントが一部のユーザーのみに表示され、他の部分がドキュメントのごく一部しか表示されないようにする方法はありますか? もちろん、ほとんどすべてがRubyとRailsで発生するため、すべてが非常に簡単です。
プロセス全体で2回の反復が必要になりますが、これはバックグラウンドジョブに詰め込む価値があります-任意の選択です。 任意の形式のファイルが既にサーバー上にあることを想像してください-たとえば、Carrierwaveを使用して、ファイルまたはあなたの魂が最も好きなものをダウンロードしました。ここでは、ファイルはまったく形式ではなく、(doc、docx、 ppt、pptx、pps、ppsx、xls、xlsx、pdf、ps、odt、odp、sxw、sxi、txt、rtf、epub)。 次に、バンドラーに追加する必要があります。
gem 'rscribd' gem 'prawn'
バンドルのインストールも忘れないでください。
その後、Scribdに登録し、キーとシークレットを取得する必要があります。これらは、次の形式でinitializers / scribd.rbに配置されます。
Scribd::API.instance.key = 'xxxxxxxxxxxxxx' Scribd::API.instance.secret = 'xxxxxxxxxxxxxx'
すべての準備が整ったので、メインの反復に移りましょう。
1回の反復-受け取った文書をscribdに純粋な形式でロードします。
#path_to_document - def scribd_upload path_to_document Scribd::Document.upload file: path_to_document, access: :private end scribd = upload_document path_to_document
関数の出力は、doc_idとaccess_keyを含むscribd変数に書き込まれます
これらの変数を保存し、それらの助けを借りて、クリーンなドキュメントをユーザーに表示できます。
scribd.doc_id
scribd.access_key
さて、クリーンなドキュメントがscribdにアップロードされました。 次に、部分表示のための2回目の反復-スタブを含むドキュメントの作成。
これは、2番目の遅延ジョブがその栄光の中で発効する場所です。 彼女の課題は、最初の最後に追加することです。
したがって、ファイルのscribd_idがあります。 -scribdeで見つけてください-
scribd = Scribd::Document.find scribd_id
次に、ドキュメントのPDFバージョンを、scribdが親切に提供してくれるリンクでサーバーにダウンロードします。
scribd.download_url 'pdf'
その後、エビを使用してスタブファイルを追加します。
Prawn::Document.generate(path_to_template_file, :template => path_to_real_file) do |doc| (1..doc.page_count).each do |page_number| doc.image(path_to_gap, :vposition => :center, :position => :center, :width => x, :height => y) end end
path_to_template_file-スタブとともに保存されるファイルへのパス(まだありませんが、エビが作成します)
path_to_real_file-pdf形式でscribdからダウンロードした実際の既存のクリーンファイルへのパス。
path_to_gap-スタブイメージへのパス
さて、このスタブの幅と高さを忘れずに入れてください(x、y)
さて、これでスタブ付きのファイルができました。これをscribbにアップロードして、idとsecret_keyを取得します。これはクリーンなファイルの場合と同じです。
これで、ファイルを純粋な形式でスタブ付きで表示するための2セットのキー/シークレットができました。誰に表示するかを決定できます。
これは次のように視覚的に見えます。

個人的には、scribdを使用するこのオプションがおそらく最も有望であると考えています。 ユーザーにはすべてのコンテンツが表示されないスタブがあるにもかかわらずファイル全体が表示され、メインパーツがブロックされます(パーツのサイズはスタブの選択に依存します)。