ICS文件中的格式字符串(设置ICS文件的字体)

时间:2013-05-15 05:03:59

标签: c# wpf outlook icalendar

我正在从C#WPF应用程序创建ICS文件,并使用以下代码生成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();

但是我在描述时遇到了一些问题。我想当我为新行添加\ n时,会产生问题。 我需要像这样格式化我的字符串。

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

我使用以下行创建虚线。

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

但输出显示一行而不是虚线。我认为“\ n”会产生问题。当我在新换行字符后添加一些空格时,我可以看到问题已解决。是否有更好的/替代解决方案对此?

描述中的某些字符串以不同的字体样式显示。如何使其独一无二?

如何从C#设置此ICs文件的字体?

请建议。

2 个答案:

答案 0 :(得分:0)

首先:你应该尝试找一个iCalendar库,而不是自己写。格式非常复杂,可能还有很多你想念的小东西。

每行最多约75个字节。如果一条线不适合(因为它更大),你可以通过注入一个真正的换行符(\r\n),后跟一个空格或制表符来拆分该行。

iCalendar阅读器只会删除所有\r\n[space]\r\n\t

但是你必须确保不要在多字节UTF-8序列中间中断文件。

描述的值必须按原样编码:

  • ;必须成为\;
  • ,必须成为\,
  • 任何换行都必须成为文字\n\N

这有帮助吗?如果没有,请发送完整的输出,如果您的iCalendar流,以便我可以告诉你你在哪里犯了错误。

答案 1 :(得分:-1)

格式说明...

    str.AppendLine(String.Format("DESCRIPTION:{0}", description));
    str.AppendLine(String.Format("X-ALT-DESC;FMTTYPE=text/html:{0}", description));