我们有一个MVC应用程序,它根据模板(它们本身就是RTF文件)输出RTF文件。
我的同事编写的代码使用System.Windows.Forms.RichTextBox
将文本转换为RTF文件(更令人兴奋的是它使用Rtf
的{{1}}属性。我正在考虑在模板RTF文件中添加页眉和页脚,但RichTextBox
似乎删除了这些文件。另外,我们生成的一些文档由多个模板组成(通常,单个模板不等于单个页面,一个模板可以注入另一个模板的中间),这就是为什么包含标题和模板中的页脚不起作用。
有没有办法将C#中的页眉和页脚添加到以上述方式创建的RTF文档中?
我尝试从互联网上钓鱼这个主题,但我找不到任何具体的东西。
答案 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文件末尾定义的任何问题。