Конвертировать iCal в HTML или обычный текст в Java - PullRequest
7 голосов
/ 17 июня 2009

Я ищу Java API для преобразования вложений ICS (иначе iCal) в красиво отформатированный HTML или открытый текст для отображения. В идеале он мог бы обрабатывать:

  • Преобразование дат в указанный часовой пояс.
  • Расширение шаблонов повторения в понятные человеку предложения.
  • Несколько записей VCALENDAR в одном файле.

Я смотрю на iCal4j, в котором есть хороший DOM-парсер, но нет способа сериализации на что-либо, кроме iCal.

Ответы [ 3 ]

2 голосов
/ 20 июня 2009

Извините, приятель, если вы погуглили и ничего не нашли, значит, у вас есть определенный набор уникальных требований, время для инноваций.

Возьми то, что имеешь, придумай некоторые идеи и опробуй их, приходит с работой!

2 голосов
/ 17 июня 2009

Я не нашел лучшей альтернативы ical4j. Я использовал это довольно успешно. К сожалению, как вы указали, все, что он делает, - это связывается с XML, и нет другого способа вывести его на что-то другое. Вы можете пройтись по DOM после создания и вывести соответствующий текст - хотя это кажется немного странным, поскольку все, что вам нужно - это text / html, у меня возникла та же проблема, и я только что закончил анализ XML.

API iCal4j немного странный, и вы можете ослабить синтаксический анализ и включить совместимость с outlook / notes, чтобы помочь вам в этом. Вы можете написать свой собственный Parser, который реализует net.fortuna.ical4j.data.CalendarParser и вытащить необходимую информацию в простой текст таким образом. Я думаю, что по умолчанию net.fortuna.ical4j.data.CalendarParserImpl составляет около 500 строк кода, вы могли бы взломать это.

1 голос
/ 03 ноября 2016

Я создал API iCalendar, который выводит простой текст. Все элементы календаря (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()));

Чтобы импортировать несколько VCalendars, вам просто нужно использовать метод processITIPMethod, чтобы импортировать их с помощью метода PUBLISH. Может обрабатывать список объектов VCalendar.String.

Если вы хотите HTML, вы должны сделать это самостоятельно.

Вы можете проверить это на http://jfxtras.org/

Вы можете скачать его на https://github.com/JFXtras/jfxtras/tree/8.0/jfxtras-icalendarfx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...