Domanda

Sto cercando un'API Java per convertire gli allegati ICS (aka iCal) in HTML o testo semplice ben formattati per scopi di visualizzazione. Idealmente, sarebbe in grado di gestire:

  • Conversione delle date in un fuso orario specificato.
  • Espandendo schemi di ricorrenza in frasi leggibili dall'uomo.
  • Più record VCALENDAR in un singolo file.

Sto guardando iCal4j, che ha un buon parser DOM, ma non c'è modo di serializzare nulla tranne iCal.

È stato utile?

Soluzione

Mi spiace amico, se hai cercato su Google e non hai trovato nulla, allora è un insieme sicuro di requisiti unici che hai ottenuto lì, tempo di innovare.

Prendi quello che hai, pensa ad alcune idee e provale, arriva con il lavoro!

Altri suggerimenti

Non ho trovato un'alternativa migliore a ical4j. L'ho usato abbastanza bene. Sfortunatamente, come fai notare, tutto ciò che fa è legarsi a XML, senza altro modo di inviarlo a qualcos'altro. Potresti percorrere il DOM dopo la creazione e generare il testo pertinente - anche se questo sembra un po 'strano poiché tutto ciò che vuoi è text / html, ho avuto lo stesso problema e ho finito per analizzare l'XML.

L'API iCal4j è un po 'strana e potresti voler rilassare l'analisi e abilitare la compatibilità con Outlook / Note per aiutarti lungo la strada. Potresti scrivere il tuo parser e questo implementa net.fortuna.ical4j.data.CalendarParser ed estrarre in questo modo le informazioni necessarie in testo semplice. Penso che il predefinito net.fortuna.ical4j.data.CalendarParserImpl sia di circa 500 righe di codice, in alternativa puoi hackerarlo.

Ho creato un'API iCalendar che genera testo in chiaro. Tutti gli elementi del calendario (VCALENDAR, VEVENT, ecc.) Hanno un metodo toContent () che produrrà un testo semplice. È davvero facile convertire più oggetti VCalendar in una lunga stringa. Ad esempio:

   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()));

Per importare più VCalendar devi solo usare il metodo processITIPMethod per importarli con il metodo PUBLISH. Può gestire un elenco di oggetti VCalendar. String.

Se vuoi HTML, devi farlo da solo.

Puoi verificarlo su http://jfxtras.org/

Puoi scaricarlo da https://github.com/JFXtras/ jfxtras / albero / 8,0 / jfxtras-icalendarfx

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top