POI de Java Apache leyó el archivo de Word (.doc) y usó estilos con nombre

Estoy intentando leer un documento de Microsoft Word 2003 (.doc) usando poi-scratchpad-3.8 (HWPF). Necesito leer el archivo palabra por palabra o carácter por carácter. De cualquier manera está bien para lo que necesito. Una vez que haya leído un carácter o una palabra, necesito obtener el nombre del estilo que se aplica a la palabra / carácter. Entonces, la pregunta es, ¿cómo obtengo el nombre de estilo utilizado para una palabra o carácter al leer el archivo .doc?

EDITAR

Estoy agregando el código que usé para intentar esto. Si alguien quiere intentar esto, buena suerte.

private void processDoc(String path) throws Exception {
    System.out.println(path);
    POIFSFileSystem fis = new POIFSFileSystem(new FileInputStream(path));
    HWPFDocument wdDoc = new HWPFDocument(fis);

    // list all style names and indexes in stylesheet
    for (int j = 0; j < wdDoc.getStyleSheet().numStyles(); j++) {
        if (wdDoc.getStyleSheet().getStyleDescription(j) != null) {
            System.out.println(j + ": " + wdDoc.getStyleSheet().getStyleDescription(j).getName());
        } else {
            // getStyleDescription returned null
            System.out.println(j + ": " + null);
        }
    }

    // set range for entire document
    Range range = wdDoc.getRange();

    // loop through all paragraphs in range
    for (int i = 0; i < range.numParagraphs(); i++) {
        Paragraph p = range.getParagraph(i);

        // check if style index is greater than total number of styles
        if (wdDoc.getStyleSheet().numStyles() > p.getStyleIndex()) {
            System.out.println(wdDoc.getStyleSheet().numStyles() + " -> " + p.getStyleIndex());
            StyleDescription style = wdDoc.getStyleSheet().getStyleDescription(p.getStyleIndex());
            String styleName = style.getName();
            // write style name and associated text
            System.out.println(styleName + " -> " + p.text());
        } else {
            System.out.println("\n" + wdDoc.getStyleSheet().numStyles() + " ----> " + p.getStyleIndex());
        }
    }

Respuestas a la pregunta(1)

Su respuesta a la pregunta