2013-07-11 1 views
6

Я пытаюсь выяснить, есть ли что-либо в документе слова, имеющем шрифт 2. Однако я не смог этого сделать. Начнем с того, что я попытался прочитать шрифт каждого слова в примере документа слова, который имеет только одну строку и 7 слов. Я не получаю правильных результатов.Как читать размер шрифта каждого слова в текстовом документе, используя POI?

Вот мой код:

HWPFDocument doc = new HWPFDocument (fileStream); 
WordExtractor we = new WordExtractor(doc); 
Range range = doc.getRange() 
String[] paragraphs = we.getParagraphText(); 
for (int i = 0; i < paragraphs.length; i++) { 
    Paragraph pr = range.getParagraph(i); 
    int k = 0 
    while (true) { 
    CharacterRun run = pr.getCharacterRun(k++); 
    System.out.println("Color: " + run.getColor()); 
    System.out.println("Font: " + run.getFontName()); 
    System.out.println("Font Size: " + run.getFontSize()); 
    if (run.getEndOffSet() == pr.getEndOffSet()) 
     break; 
    } 
} 

Однако приведенный выше код всегда удваивает размер шрифта. то есть если фактический размер шрифта в документе равен 12, тогда он выдает 24, а если фактический шрифт равен 8, то он выводит 16.

Правильно ли это можно прочитать размер шрифта из документа Word?

+0

вы могли бы попытаться использовать [эту логику Word-VBA] (http://stackoverflow.com/a/5160803/2143262) (если возможно в java) ... –

ответ

2

Да, это правильный путь; измерение находится в полутонах.

В DOCX, вы бы что-то вроде:

<w:rPr> 

    <w:sz w:val="28" /> 

</w:rPr> 

ECMA 376 spec on @sz определяет единицу как ST_HpsMeasure (Measurement in Half-Points)

Его же с двоичным форматом DOC, который поддерживает HWPF. Если вы посмотрите на [MS-DOC], вы увидите, что он также определяет размер текста в полутонах.

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

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