Rails 如何请求远程的 pdf 文件,然后把请求的文件 render 到新打开的页面

yutian · 2013年11月29日 · 最后由 yutian 回复于 2013年12月02日 · 2516 次阅读

背景介绍:本地 server 要访问文件服务器上的一个文件,两者不是同一个服务器,需要在请求到 pdf 文件后,render 到新打开的标签页。 尝试采用生成新 pdf 方式,生成新的空白 pdf 文件可以正常在新页面打开 (用 user 作为测试没问题) 遇到问题:请求远程的文件内容后追加到新的空白文档时提示不能包含非 utf8 编码的文件 Arguments to text methods must be UTF-8 encoded 不知道用这种思路解决问题是否合适?请教各位高人指点,谢谢!@Rei @leopku @nightire @ruby_sky

class FileController < ApplicationController
  require 'net/http'
  require 'open-uri'
  def show
    user= User.find(3)
    send_data generate_pdf(user),
              :filename => "#{user.name}.pdf",
              :type => "application/pdf",
              :disposition => "inline"
  end

  private

  def generate_pdf(user)
   # uri ='http://192.168.1.100/pdf/2347bdb5adf1c81775836b.pdf'
    uri = 'www.cninfo.com.cn/finalpage/2013-08-29/63017888.PDF'
    remote_full_url = URI(uri)
    remote_data = open(remote_full_url).read
    puts remote_data
    Prawn::Document.new do
      text user.name, :align => :center
     #如果text后面的是remote_data的时候提示Arguments to text methods must be UTF-8 encoded
    end.render

  end
end

...如果请求来的已经是 PDF 那直接 send_data 就好了吧

另外直接加 target="_blank" 不行么……

#1 楼 @Kabie 用了文件读写先在本地生成,然后再用 send_file 解决了

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册