如何输出带有粗体和彩色文本的.doc文件

时间:2011-05-15 21:37:47

标签: ruby jruby

我需要将文本输出到.doc文件。我目前只是像往常一样输出文件,并在文件名末尾使用.doc

File.open('output_file.doc', 'a+') {|x| x.write(str)}

问题是我想让一些文字变成红色和粗体。怎么能实现这一目标?我正在使用ruby,但是由于rvm的惊人性,我可以很容易地切换到jruby,所以如果有这样的java库,那也很棒。

1 个答案:

答案 0 :(得分:2)

简短回答:使用.rtf,然后使用word或open office转换为.doc。以下.rtf文件(写入“普通文本红色文本更普通的文本。”和颜色和粗体红色文本):

  

{\ RTF1 \ ANSI \ ansicpg1252 \ cocoartf1038 \ cocoasubrtf350   {\ fonttbl \ f0 \ fswiss \ fcharset0 Helvetica;}   {\ colortbl; \ red255 \ green255 \ blue255; \ red255 \ green0 \ blue0;}   \ margl1440 \ margr1440 \ vieww13280 \ viewh10420 \ viewkind0   \ PARD \ tx720 \ tx1440 \ tx2160 \ tx2880 \ tx3600 \ tx4320 \ tx5040 \ tx5760 \ tx6480 \ tx7200 \ tx7920 \ tx8640 \ QL \ qnatural \ pardirnatural

     

\ f0 \ fs24 \ cf0普通文字   \ b \ cf2红色文字   \ b0 \ cf0更正常的文字。}

答案很长:

字符串只是简单的ascii文本,因此没有可以使它们变粗的命令。这是所有文件的一般属性,而不仅仅是Ruby如何处理文件。

文本编辑器所做的是使用文件中的键字符串作为以某种方式呈现文本的命令。例如,双重星号在Stack Overflow编辑器中包含粗体文本。文件的文件格式决定了这些规则。

.rtf是一种基本文件格式,具有您想要的功能,并且可以使用msword或open office轻松转换为.doc。 .rtf的优点是它是人类可读的。因此,您可以使用红色文本编写rtf文件,将其重命名为.txt并在文本编辑器中打开,并查看红色字体添加的“装饰”。玩弄参数

如果您很好奇,可以在此处找到完整的.rtf规范: http://www.biblioscape.com/rtf15_spec.htm

顶部的垃圾是什么?这是标题的东西。幸运的是,您不需要添加更多标题材料来添加更多文本。