Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> редактировать rtf файл за кулисами 
V
    Опции темы
Ronin08
Дата 3.3.2010, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 218
Регистрация: 16.2.2008
Где: г.Москва

Репутация: 1
Всего: 1



Доброго времени суток!
Имеется rtf документ.
Нужно в соответствующие места вставить слова!
Вариант записать весь документ в String , и самому вставить слова в нужные места, а затем сохранить String опять в rtf;
Вот только не уверен, что будут корректно отображены абзацы, пустая строка, ... в новом файле!  
Да и вообще может как-то иначе это сделать?
--------------------
Зачем вставать рано или поздно? Надо вставать вовремя
PM MAIL   Вверх
Ronin08
Дата 4.3.2010, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 218
Регистрация: 16.2.2008
Где: г.Москва

Репутация: 1
Всего: 1



решил так:
Код

System.Text.Encoding enc = System.Text.Encoding.GetEncoding(1251);
            //System.Text.Encoding ascii = System.Text.Encoding.ASCII;

            String dogovor = "дог-345";
            //Byte[] BytesMessage = enc.GetBytes(dogovor);
            string date = DateTime.Now.Date.ToString();
            string login = "[email protected]";
            string pass = "dsfFF43g";
            string id = "34";
            String path = @"orgletter.rtf";

            String s = System.IO.File.ReadAllText(path, enc);
            
            //System.Windows.Forms.MessageBox.Show(s);
            s = s.Replace("dogovor", dogovor);
            s = s.Replace("date", date);
            s = s.Replace("login", login);
            s = s.Replace("pass", pass);
            s = s.Replace("orgid", id);

            //System.Windows.Forms.MessageBox.Show(s);
            System.IO.File.WriteAllText(@"output.rtf", s);

Но возникла новая проблема, связанная с кодировкой.
В результирующий документ вставляется вместо "дог-345" ерунда. 
Надо чтобы в строке
Код

 s = s.Replace("dogovor", dogovor);

dogovor было в кодировке cp1251
--------------------
Зачем вставать рано или поздно? Надо вставать вовремя
PM MAIL   Вверх
CYBERDREAM
Дата 4.3.2010, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I think, there4 I am
***


Профиль
Группа: Завсегдатай
Сообщений: 1096
Регистрация: 31.10.2006
Где: CyberLand

Репутация: 11
Всего: 28



когда записывал в RTF док, использовал след. метод

Код

internal static string Encode(string s)
        {
            s = s.Replace("\\", "\\\\");
            var sb = new StringBuilder();
            foreach (char c in s)
            {
                if ((c >= 48 && c <= 122) || c == '\n' || c == ' ' || c == '\t')
                {
                    sb.Append(c);
                }
                else
                {
                    if (c == '€')
                        sb.Append("\\'80");
                    else
                    {
                        if (c < 256)
                        {
                            byte[] bytes = Encoding.Unicode.GetBytes(new[] {c});
                            string tmp = "\\'" + ToHexString(bytes[0]);

                            sb.Append(tmp);
                        }
                        else
                            sb.Append("\\u" + (int) c + "?");
                    }
                }
            }
            return sb.ToString().Replace("\r\n", "\\par").Replace("\n", "\\par ");
        }

Взято с CodeProject


--------------------
Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно)
Telegram, skype: kuchuk.artiom
PM MAIL WWW   Вверх
Ronin08
Дата 5.3.2010, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 218
Регистрация: 16.2.2008
Где: г.Москва

Репутация: 1
Всего: 1



CYBERDREAM, спасибо, но решил попроще!
Оказывается метод System.IO.File.WriteAllText() перегружен и можно в качестве 3-го параметра указывать кодировку выходного файла
Код

System.Text.Encoding enc = System.Text.Encoding.GetEncoding(1251);
System.IO.File.WriteAllText(@"output.rtf", s, enc);

--------------------
Зачем вставать рано или поздно? Надо вставать вовремя
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.4040 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.