使用c#将页眉和页脚添加到RTF文件

时间:2014-06-18 12:56:04

标签: c# .net rtf

我们有一个MVC应用程序,它根据模板(它们本身就是RTF文件)输出RTF文件。

我的同事编写的代码使用System.Windows.Forms.RichTextBox将文本转换为RTF文件(更令人兴奋的是它使用Rtf的{​​{1}}属性。我正在考虑在模板RTF文件中添加页眉和页脚,但RichTextBox似乎删除了这些文件。另外,我们生成的一些文档由多个模板组成(通常,单个模板不等于单个页面,一个模板可以注入另一个模板的中间),这就是为什么包含标题和模板中的页脚不起作用。

有没有办法将C#中的页眉和页脚添加到以上述方式创建的RTF文档中?

我尝试从互联网上钓鱼这个主题,但我找不到任何具体的东西。

1 个答案:

答案 0 :(得分:2)

我正在寻找一个可以解决我的问题的图书馆,我遇到了这个: .NET RTF Writer Library in C#

图书馆本身并没有完全解决我自己的问题,但是它生成的文件很容易阅读,而且没有所有的垃圾Word都会放入其中。该库的演示生成一个具有页眉和页脚的文档。这两个代码看起来或多或少是这样的:

{\header

{\pard\fi0\qd
This is a header
\par}

}

{\footer

{\pard\fi0\qc
{\fs30 
This is a footer
}\par}

}

我仍然需要弄清楚如何在这里应用正确的格式化,但这应该相对容易找到。因此,我可以通过将上面的代码注入RichTextBox生成的RTF代码来解决我的初始问题。我不确定这两个标签的位置是否重要,但我想我很快就会发现......


以下是我用来注入页眉和页脚的代码:

public string AddHeaderAndFooter(string rtf)
{
    // Open file that stores header and footer
    string headerCode = System.IO.File.ReadAllText(Server.MapPath("~/DocTemplates/header.txt"));
    // Inject header and footer code before the last "}" character
    return rtf.Insert(rtf.LastIndexOf('}') - 1, headerCode);
}

注意我在静态txt文件中有页眉和页脚,因为它实际上包含RTF可读格式的图像,并且太大而无法放入代码中。我还没有注意到在页眉和页脚在RTF文件末尾定义的任何问题。