Ruby on rails pdftk、tempfile和rails
好吧,我试过各种各样的东西,但我不完全确定这会奏效。我需要合并的PDF位于服务器上,指向它们的链接是硬编码的。pdftk在我的终端本地工作,但不使用这些远程链接。所以我不确定这是否会工作,一旦我得到它的生产 基本上,我正在尝试编写一个方法来检索一组选定的pdf,并将它们合并到一个pdf中供用户下载 但我很难理解如何通过rails应用程序利用tempfiles和运行终端命令 方法如下:Ruby on rails pdftk、tempfile和rails,ruby-on-rails,pdftk,temporary-files,Ruby On Rails,Pdftk,Temporary Files,好吧,我试过各种各样的东西,但我不完全确定这会奏效。我需要合并的PDF位于服务器上,指向它们的链接是硬编码的。pdftk在我的终端本地工作,但不使用这些远程链接。所以我不确定这是否会工作,一旦我得到它的生产 基本上,我正在尝试编写一个方法来检索一组选定的pdf,并将它们合并到一个pdf中供用户下载 但我很难理解如何通过rails应用程序利用tempfiles和运行终端命令 方法如下: def create @routes = TransitRoute.find(params[:selected_
def create
@routes = TransitRoute.find(params[:selected_routes])
@selected_routes = @routes.collect {|x| x.new_pdf_link + " "}
Tempfile.open('prefix', "#{Rails.root}/tmp") do |f|
f.print("pdftk #{@selected_routes} cat output temporary.pdf")
f.flush
f.read
end
respond_to do |format|
format.html
end
end
我有几个问题:
谢谢你的帮助。好的,我已经开始工作了。以下是新代码,以防有人提出改进建议或有相同问题:
def create
file = Tempfile.new('temp_route_pdf', "#{Rails.root}/tmp/")
@routes = TransitRoute.find(params[:selected_routes])
selected_routes = @routes.collect {|x| x.new_pdf_link + " "}
route_names = @routes.collect {|x| x.short_name + "_"}
@generated_pdf_file = "#{route_names}routes.pdf"
`pdftk #{selected_routes}cat output #{file.path}`
raise Exception unless $?.success?
send_file( "#{file.path}",
:type => "application/pdf",
:filename => "#{@generated_pdf_file}",
:disposition => 'inline')
end