使用c#为RTF文件添加页眉和页脚
本文关键字:添加 文件 RTF 使用 | 更新日期: 2023-09-27 18:09:13
我们有一个MVC应用程序,它基于模板输出RTF文件(这些模板本身就是RTF文件)。
我同事写的代码使用System.Windows.Forms.RichTextBox
将文本转换为RTF文件(更准确地说,它使用RichTextBox
的Rtf
属性)。我正在考虑为模板RTF文件添加页眉和页脚,但RichTextBox
似乎删除了这些。另外,我们生成的一些文档是由多个模板组成的(通常情况下,一个模板不等于一个页面,一个模板可以注入到另一个模板的中间),所以这就是为什么在模板中包含页眉和页脚不能工作的另一个原因。
有没有办法在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文件末尾定义页眉和页脚的任何问题。