2016-08-06 17 views
2

Apache poi 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")); 

} 
} 
関連する問題