2
我試圖用Apache poi word 3.8創建波斯語/阿拉伯語言的word文檔。 我的問題是:如何在文檔中改變文本方向? (這意味着改變文本方向不改變段落文本對齊) 在MS Word中,我們可以使用從右到左的文本方向來改變文本方向,並且對齊
來設置對齊。 poi set屬性中的第一個相當於什麼?如何在apache poi word文檔中改變文本方向(不是段落對齊方式)?(XWPF)
我試圖用Apache poi word 3.8創建波斯語/阿拉伯語言的word文檔。 我的問題是:如何在文檔中改變文本方向? (這意味着改變文本方向不改變段落文本對齊) 在MS Word中,我們可以使用從右到左的文本方向來改變文本方向,並且對齊
來設置對齊。 poi set屬性中的第一個相當於什麼?如何在apache poi word文檔中改變文本方向(不是段落對齊方式)?(XWPF)
這是雙向文本方向支持(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"));
}
}