2014-06-18 2 views
2

У нас есть приложение MVC, которое выводит RTF-файлы на основе шаблонов (которые сами являются RTF-файлами).Добавить верхний и нижний колонтитулы в RTF-файл, используя C#

Код, который написал мой коллега, использует System.Windows.Forms.RichTextBox для преобразования текста в файл RTF (чтобы быть более привлекательным, он использует свойство RtfRichTextBox). Я думал о добавлении верхних и нижних колонтитулов в файлы RTF шаблонов, но RichTextBox, похоже, удаляет их. Кроме того, некоторые из создаваемых нами документов состоят из нескольких шаблонов (чаще всего один шаблон не равен одной странице, а один шаблон может быть введен в середине другого), поэтому есть еще одна причина, почему заголовки и нижние колонтитулы в шаблонах не будут работать.

Есть ли способ добавить верхние и нижние колонтитулы в документы C# в RTF, созданные описанным выше способом?

Я попытался поймать что-то на эту тему из Интернета, но я не смог найти ничего конкретного.

ответ

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} 

} 

мне еще нужно выяснить, как применить правильную форматирование здесь, но это должно быть относительно легко найти. Итак, я могу решить свою первоначальную проблему, введя код выше в код RTF, сгенерированный RichTextBox. Я не уверен, если положение этих двух вопросов тегов, но я предполагаю, что я считаю, что достаточно скоро ...


Вот код, который я использую, чтобы ввести верхние и нижние колонтитулы:

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.

Смежные вопросы