我在一个文件夹中有多个rtf文件。我需要在Windows上使用Ruby v1.9.3将这些文件连接成一个rtf文件。
这是我到目前为止所做的:
files_to_be_joined = Dir["*.rtf"]
File.open("Joined.rtf", "w") do |output_file|
files_to_be_joined.each do |input_file|
File.open(input_file) do |file|
file.each { |line| output_file.puts line }
end
end
end
这在机械意义上有效:它将所有rtf文件放在文件夹中。当我在文本编辑器中打开Joined.rtf时,我可以看到它包含文件夹中的所有rtf文件。但是当我在MS Word中打开Joined.rtf时,我只能看到第一个。
任何建议都将不胜感激。
答案 0 :(得分:0)
您只看到第一个文件,因为它包含指示文档结尾的分隔符。您需要使用页面分隔符替换此文档标题和后续文档标题。由于某种原因,程序可能会在这样的结束分隔符之后添加内容(例如Sticky Notes),因此下面的代码将首先从这些不可见的“尾部”清理文档,然后插入页面分隔符正确。我一直用它将我的笔记导出为PDF(之前是RTF),对我有用。
line = /(\r\n|\r|\n)/
tail = /#{line}\}#{line}.+$/m
generator = /\{\\\*\\generator [^\}]+\}/
joint = /#{line}\}#{line}\{\\rtf1\\[^\r\n]*#{line}/m
raw = Dir["*.rtf"].map do |file|
raw = File.open(file).read
raw.gsub!(tail, "\\1}\\1")
raw.gsub(generator, "")
end.join
out = File.open("Joined.rtf", "w")
out.write(raw.gsub(joint, "\\1\\page\\1"))