在RoR中使用pdf-reader gem来显示PDF

时间:2015-11-10 09:53:49

标签: ruby-on-rails ruby pdf

我是Ruby的新手,并将MVC用于网络应用,所以我想知道在哪里放置示例代码from the gem documentation。对于我的应用,我使用Paperclip上传PDF文件,我想在视图中显示PDF。我尝试将代码放在控制器中,如下所示:

require 'rubygems'
require 'open-uri'

class BooksController < ApplicationController 
...
  def index
    io     = open('http://www.cbu.edu.zm/downloads/pdf-sample.pdf')
    reader = PDF::Reader.new(io)
    puts reader.info
  end

但是当我运行它时,它会冻结服务器。我想知道如何在视图中显示此PDF以及如何使用控制台测试输出。例如,使用上面的代码,我在哪里可以看到&#34;输出reader.info&#34;的输出。声明?

2 个答案:

答案 0 :(得分:0)

试试这个:

io     = open('http://www.cbu.edu.zm/downloads/pdf-sample.pdf')
reader = PDF::Reader.new(io)

reader.pages.each do |page|
  puts page.fonts
  puts page.text
  puts page.raw_content
end

根据文档,如果您需要访问用于呈现页面的完整程序,请使用walk

PDF::Reader::Page方法
class RedGreenBlue
  def set_rgb_color_for_nonstroking(r, g, b)
    puts "R: #{r}, G: #{g}, B: #{b}"
  end
end

io       = open('http://www.cbu.edu.zm/downloads/pdf-sample.pdf')
reader   = PDF::Reader.new(io)
page     = reader.page(1)
receiver = RedGreenBlue.new
page.walk(receiver)

答案 1 :(得分:0)

尝试将Active Storage用于PDF上传,它具有更好的文档,更易于实现的方法,并且已很好地集成到5.2.2版中的Rails中。

在应用程序中启用Active Storage始于Rake任务:运行

rails active_storage:install

执行后,它将创建Active Storage需要履行承诺的两个表: active_storage_attachments active_storage_blobs

以下是官方文档的链接: https://github.com/rails/rails/blob/d3893ec38ec61282c2598b01a298124356d6b35a/activestorage/README.md

就是这样。

我希望这对您有帮助

在有帮助的情况下将此答案赞为有用,或在答案下方评论以进一步说明。