2013-05-15 3 views
4

Я создаю файл ICS из приложения # C# WPF и используя следующий код для генерации файла ICS.Строка формата в ICS Fle (Установить шрифт для файла ICS)

StreamWriter writer; 
writer = new StreamWriter(filePath); 
writer.WriteLine("BEGIN:VCALENDAR"); 
writer.WriteLine("VERSION:2.0"); 
writer.WriteLine("PRODID:MyApp"); 
writer.WriteLine("CALSCALE:GREGORIAN"); 
writer.WriteLine("METHOD:PUBLISH"); 
writer.WriteLine("BEGIN:VEVENT"); 
string startDateTime = Convert.ToDateTime(appointmentDetails.StartDate).ToString("yyyyMMdd'T'HHmmss"); 
string endDateTime = Convert.ToDateTime(appointmentDetails.EndDate).ToString("yyyyMMdd'T'HHmmss"); 

writer.WriteLine("DTSTART:" + startDateTime); 
writer.WriteLine("DTEND:" + endDateTime); 
writer.WriteLine(@"DESCRIPTION:" + appointmentDetails.Body); 
writer.WriteLine("SUMMARY:" + appointmentDetails.Subject); 
writer.WriteLine("END:VEVENT"); 
writer.WriteLine("END:VCALENDAR"); 
writer.Close(); 

Но у меня есть некоторые проблемы, в то время как fromating description.I думает, когда я добавить \ п для новой линии, это создает проблему. Мне нужно форматировать мою строку следующим образом.

------------------ 
Header1 
----------------- 
bOdy1 
contents 
--------------- 

Я использую следующую строку для создания пунктирной линии.

result += new String('-', characterLength) + "\\n"; 

Но из положить показывает одну линии вместо пунктира line.I думает «\ п» создает problem.when добавляют некоторое пространство после новой линии экранирующего символа я вижу проблему solved.Is ли лучшее/альтернативное решение для этого?

Немного строки в описании, отображаемом в другом стиле шрифта. Как сделать его уникальным?

Как установить шрифт для этого IC-файла с C#?

Просьба предложить.

+0

«Вы пробовали Environment.NewLine вместо \\ п? – Viv

+0

Да tried.But Когда я использовал "Environment.NewLine", строку после этого Environment.NewLine кода исчез на дисплее. Поэтому я использовал \ n вместо Environment.NewLine –

ответ

0

Во-первых: вы должны попытаться найти библиотеку iCalendar, вместо того, чтобы писать это самостоятельно. Формат очень сложный, и, вероятно, есть много мелких вещей, которые вам не хватает.

Каждая строка должна быть не более 75 байт. Если строка не подходит (потому что она больше), вы можете разбить линию, введя настоящую новую строку (\r\n), а затем пробел или вкладку.

Читатель iCalendar просто удалит любые \r\n[space] или \r\n\t.

Вы должны убедиться, что вы не разбиваете файл в середине многобайтовой последовательности UTF-8.

Значение для описания должны быть закодированы как, например:

  • ; должен стать \;
  • , должен стать \,
  • Любая новая линия должна стать буквальным \n или \N

Помогает ли это? Если нет, отправьте полный вывод, если поток iCalendar, чтобы я мог сообщить вам, где вы допустили ошибку.

-1

описание Формат ...

str.AppendLine(String.Format("DESCRIPTION:{0}", description)); 
    str.AppendLine(String.Format("X-ALT-DESC;FMTTYPE=text/html:{0}", description)); 
Смежные вопросы