2013-07-11 12 views
6

Tôi đang cố gắng tìm hiểu xem có tồn tại bất cứ điều gì trong tài liệu từ có phông chữ của 2. Tuy nhiên, tôi đã không thể làm điều này. Để bắt đầu, tôi đã cố gắng đọc phông chữ của mỗi từ trong một tài liệu từ mẫu chỉ có một dòng và 7 từ. Tôi không nhận được kết quả chính xác.Làm thế nào để đọc kích thước phông chữ của mỗi từ trong tài liệu từ bằng cách sử dụng POI?

Đây là mã của tôi:

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; 
    } 
} 

Tuy nhiên, các mã trên luôn tăng gấp đôi kích thước phông chữ. tức là nếu kích thước phông chữ thực tế trong tài liệu là 12 thì kết quả đầu ra là 24 và nếu phông chữ thực tế là 8 thì kết quả đầu ra là 16.

Đây có phải là cách đúng để đọc cỡ chữ từ tài liệu word không ??

+0

bạn có thể thử sử dụng [logic Word-VBA này] (http://stackoverflow.com/a/5160803/2143262) (nếu có thể trong java) ... –

Trả lời

2

Vâng, đó là cách chính xác; phép đo bằng nửa điểm.

Trong một docx, bạn muốn có cái gì như:

<w:rPr> 

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

</w:rPr> 

ECMA 376 spec on @sz xác định đơn vị như ST_HpsMeasure (Measurement in Half-Points)

của nó cùng với các định dạng doc nhị phân, mà HWPF hỗ trợ. Nếu bạn nhìn vào [MS-DOC], bạn sẽ thấy nó cũng chỉ định kích thước của văn bản trong nửa điểm.

Các vấn đề liên quan