我是铁杆新手。有人能告诉我是否有一种快速简便的方法来生成rtf文件供人们使用rails下载? 例如,如果我有“views / users / show.html.erb”,视图通常会输出到html,所以我希望人们可以下载为相同的rtf文档?
答案 0 :(得分:7)
ruby-rtf是您正在寻找的宝石。有一些rtf生成here
的例子将此添加到initializers / mime_types.rb:
Mime::Type.register "text/richtext", :rtf
代码给你一个想法:
document = RTF::Document.new(RTF::Font.new(RTF::Font::ROMAN, 'Times New Roman'))
document.paragraph do |p|
p << "This is the first sentence in the paragraph. "
p << "This is the second sentence in the paragraph. "
p << "And this is the third sentence in the paragraph."
end
send_file document, :type=>"text/richtext"
答案 1 :(得分:1)
ruby-rtf - 是rtf解析
这个是rtf生成 - https://github.com/clbustos/rtf
答案 2 :(得分:0)
我在Rails 4.2上这样做,它似乎工作到目前为止。我没有在最新版本的Rails上测试过这个,但接下来就是这样。宝石最近没有被维护,所以关于这是否符合我的所有要求的判决仍然存在。
首先,Nazar是正确的,链接应该是https://github.com/clbustos/rtf,以便从Rails控制器创建RTF文件与解析RTF文件。
我尝试了答案中提供的代码,但在此实现中使用send_file存在问题。由于send_file用于发送给定路径的文件,因此它不起作用,如图所示。另一方面,send_data用于直接从Rails应用程序发送数据流。所以这是我用于创建RTF文档的代码,可直接从控制器下载。
基本设置:
的Gemfile:
gem 'rtf'
安装gem。
配置/初始化/ mime_types.rb
Mime::Type.register "text/richtext", :rtf
在“lib”目录中,我创建了一个特殊的RTF生成器(将代码放入控制器可以生成用于测试的RTF文档,但RTF生成应该在一个单独的文件中,因为创建RTF文档的代码可以获得很快,并不真正属于控制器):
LIB / rtf_reporting.rb
class RtfReporting
require 'rtf'
def initialize
end
...
def self.get_rtf_document(reporting)
document = RTF::Document.new(RTF::Font.new(RTF::Font::ROMAN, 'Times New Roman'))
document.paragraph do |p|
p << "This is the first sentence in the paragraph. TESTING ID = #{reporting.id}"
p << "This is the second sentence in the paragraph. "
p << "And this is the third sentence in the paragraph."
end
return document.to_rtf
end
end
控制器:
应用程序/控制器/ reportings_controller.rb
class ReportingsController < ApplicationController
require 'rtf_reporting'
...
def show
...
respond_to do |format|
format.rtf do
send_data RtfReporting.get_rtf_document(@reporting), :type=>"text/richtext",
:filename => "your_file_name.rtf",
:disposition => 'attachment'
end
end
end
end
我希望这有助于某人。这篇文章中的原始答案帮助了我!知道我的答案和其他答案之间的最大区别是send_file vs send_data,这本身就是一个大问题,但我也希望提供一些有关如何组织我的代码的见解,因为没有像这样的视图文件用于基于HTML或PDF的解决方案。