Как использовать POI для отмены автоматической регулировки расстояния между китайским и западным языками в абзацах слов - PullRequest
1 голос
/ 20 июня 2019

Я использую классы XWPFDocument и XWPFParagraph для создания 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();

1 Ответ

1 голос
/ 20 июня 2019

Я подозреваю, что вы имеете в виду настройки, описанные в Настройка расстояния между восточноазиатским и латинским текстом .

Эти настройки сохраняются в document.xml с использованием элементов autoSpaceDE и autoSpaceDN в свойствах абзаца.

Используя 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();

 }
}
...