Oracle Forms Builder - Migration MS to LibreOffice

Hi,
I need to change a procedure which creates an object of ms word and launch the spell checker. How would do this with libreoffice?.
thanks.


PROCEDURE PR_REVISA_ORTOGRAFIA (ITEM_NAME IN VARCHAR2) IS 
 lObAplicacion      CLIENT_OLE2.OBJ_TYPE; --OBJETO QUE ALMACENA LA APLICACIÓN (word) 
 lObDocumentos      CLIENT_OLE2.OBJ_TYPE; --OBJETO QUE GUARDA LA COLECCIÓN DE DOCUMENTOS
 lObDocumento       CLIENT_OLE2.OBJ_TYPE; --OBJETO QUE GUARDA EL DOCUMENTO
 lObSeleccion       CLIENT_OLE2.OBJ_TYPE; --OBJETO QUE GUARDA LA SELECCIÓN
 lObPalabra         CLIENT_OLE2.OBJ_TYPE; --OBJETO QUE VA ALMACENANDO LA PALABRA A REVISAR
 lObArgumentos      CLIENT_OLE2.LIST_TYPE; 
 lVPalabraRevisada  VARCHAR2(4000); 
 lVTextoOriginal    VARCHAR2(4000); 
                             
BEGIN 
  lVTextoOriginal := NAME_IN(ITEM_NAME);      
 -- SE CREA EL OBJETO WORD.APPLICATION

  lObAplicacion := CLIENT_OLE2.CREATE_OBJ('Word.Application'); 
  CLIENT_OLE2.SET_PROPERTY(lObAplicacion, 'VISIBLE', FALSE);  
                    
 -- SE OBTIENE EL MANEJADOR DE COLECCIONES DE DOCUMENTOS 
  lObDocumentos := CLIENT_OLE2.GET_OBJ_PROPERTY(lObAplicacion, 'DOCUMENTS'); 
          
 -- SE AÑADE UN NUEVO DOCUMENTO A LA COLLECIÓN DE DOCUMENTOS 
  lObDocumento := CLIENT_OLE2.INVOKE_OBJ(lObDocumentos, 'ADD');         
      
 -- SE OBTIENE EL MANEJADOR DEL OBJETO SELECCIÓN 
  lObSeleccion := CLIENT_OLE2.GET_OBJ_PROPERTY(lObAplicacion, 'SELECTION'); 
          
 -- SE INSERTA EL CAMPO DE TEXTO EN EL DOCUMENTO 
  CLIENT_OLE2.SET_PROPERTY(lObSeleccion, 'TEXT', lVTextoOriginal); 
 
 -- SE OBTIENE EL MANEJADOR DEL DOCUMENTO ACTIVO
  lObPalabra := CLIENT_OLE2.GET_OBJ_PROPERTY(lObAplicacion, 'ACTIVEDOCUMENT'); 
 
 -- SE INVOCA AL CORRECTOR ORTOGRAFICO
  CLIENT_OLE2.INVOKE(lObPalabra, 'CHECKSPELLING');
  
 -- SE CORRIJE EL TEXTO DESDE EL DOCUMENTO
  lVPalabraRevisada := CLIENT_OLE2.GET_CHAR_PROPERTY(lObSeleccion, 'TEXT'); 
 -- SE REFORMATEA EL TEXTO DEVUELTO PARA QUE SE MUESTRE CORRECTAMENTE EN EL FORM
  lVPalabraRevisada := substr(replace(lVPalabraRevisada,chr(13),chr(10)), 1, length(lVPalabraRevisada));  
 -- SE COPIA EL NUEVO TEXTO EN EL FORM
 -- Controlamos la acción de Cancelar de la pantalla del corrector ortográfico del Word 
 IF lVPalabraRevisada LIKE CHR(10) OR LENGTH(lVPalabraRevisada) = 1 THEN  
  COPY(lVTextoOriginal,ITEM_NAME);  
 ELSE     
   COPY(lVPalabraRevisada,ITEM_NAME);     
 END IF; 
 
 -- CERRAMOS EL DOCUMENTO SIN GUARDAR LOS CAMBIOS 
  lObArgumentos := CLIENT_OLE2.CREATE_ARGLIST; 
  CLIENT_OLE2.ADD_ARG(lObArgumentos, 0); 
  CLIENT_OLE2.INVOKE(lObDocumento, 'CLOSE',lObArgumentos); 
  CLIENT_OLE2.DESTROY_ARGLIST(lObArgumentos); 
 
 -- LIBERAMOS LOS OBJETOS OLE 
  CLIENT_OLE2.RELEASE_OBJ(lObSeleccion); 
  CLIENT_OLE2.RELEASE_OBJ(lObPalabra); 
  CLIENT_OLE2.RELEASE_OBJ(lObDocumento); 
  CLIENT_OLE2.RELEASE_OBJ(lObDocumentos); 
  CLIENT_OLE2.INVOKE(lObAplicacion, 'QUIT'); 
  CLIENT_OLE2.RELEASE_OBJ(lObAplicacion); 
      
END PR_REVISA_ORTOGRAFIA;