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

本文关键字:添加 文件 RTF 使用 | 更新日期: 2023-09-27 18:09:13

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

我同事写的代码使用System.Windows.Forms.RichTextBox将文本转换为RTF文件(更准确地说,它使用RichTextBoxRtf属性)。我正在考虑为模板RTF文件添加页眉和页脚,但RichTextBox似乎删除了这些。另外,我们生成的一些文档是由多个模板组成的(通常情况下,一个模板不等于一个页面,一个模板可以注入到另一个模板的中间),所以这就是为什么在模板中包含页眉和页脚不能工作的另一个原因。

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

我试着从网上找一些关于这个主题的东西,但我没能找到任何具体的。

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

我正在寻找一个可能解决我的问题的库,我遇到了这个:.NET RTF编写器库

库本身并不能完全解决我的问题,但是它生成的文档很容易阅读,而且没有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文件末尾定义页眉和页脚的任何问题。