gpt4 book ai didi

java - 使用 Apache-POI 设置选项卡大小

转载 作者:行者123 更新时间:2023-12-02 10:46:46 26 4
gpt4 key购买 nike

我想通过 Apache-POI 在 Word 文档中设置制表符大小。

我有一个标题,它应该在标题行中包含两个字段,如下所示:

|    filed1                  ->                   field2    |

垂直线代表页面的边缘。我希望两个字段之间的选项卡尽可能大,以便第一个字段左对齐到页面,右字段右对齐到页面。

用Word本身就很容易完成,但我只了解了如何使用POI添加选项卡,但没有了解如何设置选项卡的宽度。

我尝试使用 Apache tika 工具调查 Word 文件,但没有看到制表符大小隐藏在文件中的位置。

感谢任何帮助,麦克

最佳答案

制表位是Word段落中的设置。尽管使用制表位是一种非常常见的事情,也是文字处理中非常古老的过程,但如果不使用 apache poi 的低级底层 ooxml-schema 对象,这是不可能的。

示例:

注意:制表位位置的测量单位是缇(二十分之一英寸点)。

import java.io.FileOutputStream;

import org.apache.poi.xwpf.usermodel.*;
import org.apache.poi.wp.usermodel.HeaderFooterType;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTabStop;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STTabJc;

import java.math.BigInteger;

public class CreateWordHeaderWithTabStops {

public static void main(String[] args) throws Exception {

XWPFDocument doc = new XWPFDocument();

// the body content
XWPFParagraph paragraph = doc.createParagraph();
XWPFRun run = paragraph.createRun();
run.setText("The Body...");

// create header
XWPFHeader header = doc.createHeader(HeaderFooterType.FIRST);

// header's first paragraph
paragraph = header.getParagraphArray(0);
if (paragraph == null) paragraph = header.createParagraph();
paragraph.setAlignment(ParagraphAlignment.LEFT);

// create tab stops
int twipsPerInch = 1440; //measurement unit for tab stop pos is twips (twentieth of an inch point)

CTTabStop tabStop = paragraph.getCTP().getPPr().addNewTabs().addNewTab();
tabStop.setVal(STTabJc.CENTER);
tabStop.setPos(BigInteger.valueOf(3 * twipsPerInch));

tabStop = paragraph.getCTP().getPPr().getTabs().addNewTab();
tabStop.setVal(STTabJc.RIGHT);
tabStop.setPos(BigInteger.valueOf(6 * twipsPerInch));

// first run in header's first paragraph, to be for first text box
run = paragraph.createRun();
run.setText("Left");
// add tab to run
run.addTab();

run = paragraph.createRun();
run.setText("Center");
// add tab to run
run.addTab();

run = paragraph.createRun();
run.setText("Right");

FileOutputStream out = new FileOutputStream("CreateWordHeaderWithTabStops.docx");
doc.write(out);
doc.close();
out.close();


}
}

关于java - 使用 Apache-POI 设置选项卡大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52497367/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com