2009-06-17 13 views
7

Sto cercando un'API Java per convertire gli allegati ICS (noti anche come iCal) in HTML o testo in chiaro ben formattati per la visualizzazione. Idealmente, sarebbe in grado di gestire:Converti iCal in HTML o testo in chiaro in Java

  • Conversione di date in un fuso orario specificato.
  • Espansione di ricorrenza in frasi leggibili.
  • Più record VCALENDAR in un singolo file.

Sto guardando iCal4j, che ha un buon parser DOM, ma non c'è modo di serializzare su qualsiasi cosa eccetto iCal.

risposta

2

Scusa amico, se hai cercato su Google in giro e non hai trovato nulla, allora è un certo insieme di requisiti unici che hai ottenuto, tempo di innovare.

Prendi ciò che hai, pensa a delle idee e provale, arriva con il lavoro!

+0

Sì, ha scritto il mio. –

+1

@ChaseSeibert Qualche possibilità di rilasciare il codice o fa parte di un prodotto proprietario? –

2

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

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

+2

Suona come un lavoro per XSLT! –

0

Ho creato un'API iCalendar che emette testo in chiaro. Tutti gli elementi del calendario (VCALENDAR, VEVENT, ecc.) Hanno un metodo toContent() che produce testo normale. È davvero facile convertire più oggetti VCalendar in una stringa lunga. Per 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ù vCalendars è sufficiente utilizzare il metodo processITIPMethod per importarli con il metodo PUBBLICARE. Può gestire un elenco di oggetti VCalendar. Stringhe.

Se si desidera l'HTML, è necessario farlo da soli.

È possibile controllare fuori a http://jfxtras.org/

Potete scaricarlo a https://github.com/JFXtras/jfxtras/tree/8.0/jfxtras-icalendarfx