2014-01-29 2 views
0

это вытекает отсюда:Java Apache POI читать Слово (.doc) файл и получить названные стили символов, которые используются

Java Apache POI read Word (.doc) file and get named styles used

в то время (10/2012) там было решение о поиске стилей абзацев но не стилей символов.

И все же ... если вы используете LibreOffice Writer для открытия Word-документа, например, он переводит стили и выделяет из .doc в .odt ... так что кто-то, похоже, взломал это ...

Я не знаю, связаны ли команды POI Apache и команды LibreOffice/OpenOffice, но я бы подумал, что команда POI Apache могла бы получить эту функциональность из исходного кода LO. Я наивна?

+0

код в ответ на другой вопрос, который вы должны ссылаться работать хорошо, если вы смотрите на основе CharacterRun, а не части - то, что происходит, если вы пытаетесь это? – Gagravarr

+0

спасибо ... но http://poi.apache.org/apidocs/org/apache/poi/hwpf/usermodel/CharacterRun.html - CharacterRun не имеет метода getStyleIndex, как и в Paragraph.Я пытаюсь найти имя или индекс или ссылку на * стиль символа *. –

+0

Делает ли [CharacterRun.getStyleIndex()] (http://poi.apache.org/apidocs/org/apache/poi/hwpf/usermodel/CharacterRun.html#getStyleIndex%28%29) то, что вам нужно? ;-) – Gagravarr

ответ

1

Содействие некоторых комментариев к ответу:

Если посмотреть на ответ в данном Java Apache POI read Word (.doc) file and get named styles used, вы увидите, как Apache Тик извлекает имена стиля абзаца. Взятые из Paragraph javadoc:

общественности короткий getStyleIndex()

Возвращает индекс стиля, который применяется к этому пункту. Подробная информация о стиле можно посмотреть вверх от StyleSheet через StyleSheet.getStyleDescription (INT)

В вашем случае, что вы после этого является эквивалентом, но для персонажа Run. Это тоже (сейчас) можно, как указано в CharacterRun.getStyleIndex() javadocs

общественности короткий getStyleIndex()

Возвращает индекс базового стиля, который применяется к этому Run. Подробную информацию о стиле можно найти в StyleSheet с помощью StyleSheet.getStyleDescription (int).

Обратите внимание, что выполнение обычно переопределяет некоторые свойства стиля из базы, поэтому обычная информация о стиле должна выбираться непосредственно из самого CharacterRun.

Чтобы увидеть это в действии, хороший пример приведен в TestRangeProperties unit test. Оттуда, мы видим такой код:

Range r = u.getRange(); 
StyleSheet ss = r._doc.getStyleSheet(); 

Paragraph p1 = r.getParagraph(0); 
CharacterRun c1a = p1.getCharacterRun(0); 

assertEquals("Normal", ss.getStyleDescription(c1a.getStyleIndex()).getName()); 

Это показывает, как получить имя базового стиля, применяемого к Character Run

Один последний вещь - вам придется использовать либо ночной сборки или немного ждать 3.11 beta 1, так как некоторые из упомянутых кодов не находятся в финале 3.10.

-1

использование

paragraph.getCTP().getPPr().getRPr().isSetB() 
+1

Добавление немного более подробной информации поможет вам получить положительный ответ. – dckuehn

+0

Это только говорит о том, является ли пробел полужирным или нет, он не укажет имя стиля – Gagravarr

 Смежные вопросы

  • Нет связанных вопросов^_^