我需要将文本输出到.doc文件中。我目前只是像往常一样输出到文件并在文件名末尾使用.doc
File.open('output_file.doc', 'a+') {|x| x.write(str)}
问题是我想使一些文本变红和粗体。如何实现这一点?我正在使用 ruby,但由于 rvm 的惊人之处,我可以轻松切换到 jruby,所以如果有 Java 库,那也很棒。
的回答:使用.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 处理文件的方式。
文本编辑器所做的是使用文件中的关键字符串作为命令,以某种方式呈现文本。例如,在堆栈溢出编辑器中,粗体文本周围有双星号。文件的文件格式决定了这些规则。
.rtf是一种基本的文件格式,具有您想要的功能,并且很容易使用 MSWORD 或 Open Office 转换为.doc。.rtf的优势在于它是人类可读的。因此,您可以编写带有红色文本的 rtf 文件,将其重命名.txt并在文本编辑器中打开,看看红色字体添加了哪些"装饰"。使用参数
如果您好奇,可以在此处找到完整的.rtf规格:http://www.biblioscape.com/rtf15_spec.htm
顶部的垃圾是什么?那是标题的东西。幸运的是,您无需添加更多标题材料即可添加更多文本。