如何在 apache poi word 中更改文档中的文本方向(不是段落对齐)?(XWPF)
how change text direction(not paragraph alignment) in document in apache poi word?(XWPF)
我正在尝试使用 Apache poi word 3.8 创建 persian/arabic 语言的 word 文档。
我的问题是:如何改变文档中的文本方向? (这意味着改变文本方向而不是仅仅改变段落文本对齐方式)
在 MS Word 中,我们可以使用从右到左的文本方向 来更改文本方向,并使用 Align Right 来设置对齐方式。 poi set 属性中的第一个相当于什么?
这是双向文本方向支持 (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");
FileOutputStream out = new FileOutputStream("WordDocument.docx");
doc.write(out);
out.close();
doc.close();
}
}
我正在尝试使用 Apache poi word 3.8 创建 persian/arabic 语言的 word 文档。
我的问题是:如何改变文档中的文本方向? (这意味着改变文本方向而不是仅仅改变段落文本对齐方式)
在 MS Word 中,我们可以使用从右到左的文本方向
这是双向文本方向支持 (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");
FileOutputStream out = new FileOutputStream("WordDocument.docx");
doc.write(out);
out.close();
doc.close();
}
}