繁体   English   中英

将 iCal 转换为 HTML 或 Java 中的明文

[英]Convert iCal to HTML or plaintext in Java

我正在寻找 Java API 以将 ICS(又名 iCal)附件转换为格式良好的 HTML 或纯文本以供显示。 理想情况下,它能够处理:

  • 将日期转换为指定时区。
  • 将重复模式扩展为人类可读的句子。
  • 单个文件中的多个 VCALENDAR 记录。

我在看 iCal4j,它有一个很好的 DOM 解析器,但除了 iCal 之外没有办法序列化。

我没有找到比 ical4j 更好的替代品。 我使用它相当成功。 不幸的是,正如您所指出的,它所做的只是绑定到 XML,没有其他方法可以将它绑定到 output。 你可以在创建后遍历 DOM 和 output 相关文本——尽管这看起来有点奇怪,因为你想要的只是文本/html,但我遇到了同样的问题,只是最终解析出了 XML。

iCal4j API 有点奇怪,您可能想放松解析并启用 outlook/notes 兼容性来帮助您。 您可以编写自己的解析器并实现net.fortuna.ical4j.data.CalendarParser并以这种方式将必要的信息提取为纯文本。 我认为默认的net.fortuna.ical4j.data.CalendarParserImpl大约有 500 行代码,您也可以修改它。

对不起,伙计,如果你用谷歌搜索但什么也没找到,那么你肯定有一套独特的要求,是时候创新了。

拿你所有的东西,想出一些想法,然后尝试一下,随工作而来!

我制作了一个输出纯文本的 iCalendar API。 所有日历元素(VCALENDAR、VEVENT 等)都有一个生成纯文本的 toContent() 方法。 将多个 VCalendar 对象转换为一个长字符串真的很容易。 例如:

   List<VCalendar> calendars = new ArrayList<VCalendar>();
   // add VCalendars here
   // then concated the text of each into one long string
   String allContent = calendars.stream()
       .map(v -> v.toContent())
       .collect(Collectors.joining(System.lineSeparator()));

要导入多个 VCalendar,您只需使用 processITIPMethod 方法通过 PUBLISH 方法导入它们。 它可以处理 VCalendar objects.String 列表。

如果你想要 HTML 你必须自己做。

您可以在http://jfxtras.org/ 查看

可以到https下载://github.com/JFXtras/jfxtras/tree/8.0/jfxtras-icalendarfx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM