2016-08-06 2 views
2

Я пытаюсь использовать слово Apache pois word 3.8 для создания словарного документа на персидском/арабском языке. Мой вопрос: как изменить направление текста в документе? (это означает изменение направления текста, не изменяющего только выравнивание текста абзаца) В MS Word мы можем использовать направление текста справа налево , чтобы изменить направление текста и выровнять по правому краю , чтобы установить выравнивание. Что эквивалентно первому в свойстве poi set?Как изменить направление текста (не выравнивание абзаца) в документе в apache poi word? (XWPF)

ответ

2

Это двунаправленная поддержка направления текста (bidi) и еще не реализована в apache poi по умолчанию. Но основной объект org.openxmlformats.schemas.wordprocessingml.x2006.main.CTPPrBase поддерживает это. Поэтому мы должны получить этот базовый объект от XWPFParagraph.

Пример:

import java.io.FileOutputStream; 

import org.apache.poi.xwpf.usermodel.*; 

import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTP; 
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTPPr; 
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STOnOff; 

public class CreateWordRTLParagraph { 

public static void main(String[] args) throws Exception { 

    XWPFDocument doc= new XWPFDocument(); 

    XWPFParagraph paragraph = doc.createParagraph(); 
    XWPFRun run = paragraph.createRun(); 
    run.setText("Paragraph 1 LTR"); 

    paragraph = doc.createParagraph(); 

    CTP ctp = paragraph.getCTP(); 
    CTPPr ctppr; 
    if ((ctppr = ctp.getPPr()) == null) ctppr = ctp.addNewPPr(); 
    ctppr.addNewBidi().setVal(STOnOff.ON); 

    run = paragraph.createRun(); 
    run.setText("السلام عليكم"); 

    paragraph = doc.createParagraph(); 
    run = paragraph.createRun(); 
    run.setText("Paragraph 3 LTR"); 

    doc.write(new FileOutputStream("WordDocument.docx")); 

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