2009-06-17 25 views
7

Estoy buscando una API de Java para convertir archivos adjuntos de ICS (también conocido como iCal) en texto con formato agradable o texto plano para fines de visualización. Idealmente, sería capaz de manejar:Convierta iCal a HTML o texto plano en Java

  • Convirtiendo fechas a una zona horaria específica.
  • Ampliar los patrones de recurrencia en oraciones legibles por humanos.
  • Múltiples registros de VCALENDAR en un solo archivo.

Estoy viendo iCal4j, que tiene un buen analizador DOM, pero no hay manera de serializar a nada más que iCal.

Respuesta

2

Lo sentimos, si buscó en Google y no encontró nada, entonces es un conjunto seguro de requisitos únicos que llegó allí, es hora de innovar.

Toma lo que tienes, inventa algunas ideas y pruébalo, ¡viene con el trabajo!

+0

Sí, escribí el mío. –

+1

@ChaseSeibert ¿Alguna posibilidad de que pueda liberar su código, o es parte de un producto propietario? –

2

No encontré una mejor alternativa a ical4j. Lo usé con bastante éxito. Lamentablemente, como usted señala, todo lo que hace es vincularse a XML, sin otra forma de mostrarlo en otra cosa. Podrías recorrer el DOM después de la creación y sacar el texto relevante, aunque parece un poco extraño, ya que todo lo que quieres es text/html, tuve el mismo problema y terminé analizando el XML.

La API de iCal4j es un poco extraña y es posible que desee relajar el análisis y permitir la compatibilidad de Outlook/notas para ayudarlo en el camino. Puede escribir su propio Analizador y eso implementa net.fortuna.ical4j.data.CalendarParser y extraer la información necesaria en texto sin formato de esa manera. Creo que el valor predeterminado net.fortuna.ical4j.data.CalendarParserImpl es de aproximadamente 500 líneas de código, alternativamente, podría hackear eso.

+2

Suena como un trabajo para XSLT! –

0

Hice una API de iCalendar que genera texto sin formato. Todos los elementos del calendario (VCALENDAR, VEVENT, etc.) tienen un método toContent() que producirá texto sin formato. Es muy fácil convertir múltiples objetos de VCalendar en una larga cadena. Por ejemplo:

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

Para importar múltiples vCalendars sólo tiene que utilizar el método processITIPMethod para importarlos con el método PUBLICAR. Puede manejar una lista de objetos de VCalendar.String.

Si desea HTML, hágalo usted mismo.

Puede echarle un vistazo en http://jfxtras.org/

Puede descargarlo en https://github.com/JFXtras/jfxtras/tree/8.0/jfxtras-icalendarfx

Cuestiones relacionadas