我使用XWPFDocument
和XWPFParagraph
类创建Word,但是中西文总是有差距,我取消了中西文间距的自动调整通过WORD在word段落中输入西文可以解决这个问题,但是如何使用代码来做到这一点;
我认为可以使用CTStyle
,但我不知道该怎么做;
XWPFDocument doc = new XWPFDocument();
XWPFParagraph page = doc.createParagraph();
XWPFRun runs = page.createRun();
runs.setBold(false);
runs.setFontFamily("宋体");
runs.setFontSize(9);
runs.setText("12H型");
//export
OutputStream output = response.getOutputStream();
BufferedOutputStream bufferedOutPut = new BufferedOutputStream(output);
bufferedOutPut.flush();
doc.write(bufferedOutPut);
bufferedOutPut.close();
最佳答案
我怀疑您指的是 Configure text spacing between East Asian and Latin text 中描述的设置.
这些设置使用段落属性中的元素 autoSpaceDE
和 autoSpaceDN
存储在 document.xml
中。
使用apache poi
可以像这样完成:
import java.io.FileOutputStream;
import org.apache.poi.xwpf.usermodel.*;
public class CreateWordEnglishAndChinese {
public static void main(String[] args) throws Exception {
XWPFDocument document = new XWPFDocument();
XWPFParagraph paragraph = document.createParagraph();
if (paragraph.getCTP().getPPr() == null) paragraph.getCTP().addNewPPr();
if (paragraph.getCTP().getPPr().getAutoSpaceDE() == null) paragraph.getCTP().getPPr().addNewAutoSpaceDE();
paragraph.getCTP().getPPr().getAutoSpaceDE().setVal(org.openxmlformats.schemas.wordprocessingml.x2006.main.STOnOff.OFF);
if (paragraph.getCTP().getPPr().getAutoSpaceDN() == null) paragraph.getCTP().getPPr().addNewAutoSpaceDN();
paragraph.getCTP().getPPr().getAutoSpaceDN().setVal(org.openxmlformats.schemas.wordprocessingml.x2006.main.STOnOff.OFF);
XWPFRun run = paragraph.createRun();
run.setText("12H型:Type 12H");
FileOutputStream out = new FileOutputStream("CreateWordEnglishAndChinese.docx");
document.write(out);
out.close();
document.close();
}
}
关于java - 如何使用POI取消单词段落中西文间距自动调整,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56680421/