繁体   English   中英

Apache poi XWPF 段落行距

[英]Apache poi XWPF Paragraph line spacing

我正在考虑尝试在 Java/Coldfusion 中使用 Apache Poi 构建 Word 文档。 到目前为止,除了段落的行距之外,它让我可以做很多我想要的格式。 有谁知道我如何将段落设置为单行间隔? 它不断构建具有多个行距的段落的文档,间距为 1.15。

下面是代码示例:

document = loader.create("org.apache.poi.xwpf.usermodel.XWPFDocument");
ParagraphAlignment = loader.create("org.apache.poi.xwpf.usermodel.ParagraphAlignment" );
paragraphOne = document.createParagraph();
paragraphOne.setAlignment(ParagraphAlignment.CENTER);

paragraphOneRunOne = paragraphVar.createRun();
paragraphOneRunOne.setFontFamily('Cambria');
paragraphOneRunOne.setFontSize(12);
paragraphOneRunOne.setBold(false);
paragraphOneRunOne.setText(Here's one line of text in this paragraph);
paragraphOneRunOne.addBreak();

paragraphOneRunTwo = paragraphVar.createRun();
paragraphOneRunTwo.setFontFamily('Cambria');
paragraphOneRunTwo.setFontSize(12);
paragraphOneRunTwo.setBold(false);
paragraphOneRunTwo.setText(Here's a second line of text in this paragraph);
paragraphOneRunTwo.addBreak();

我查看了示例和 api 文档,我能找到的唯一行间距设置确定了段落之前或之后的行间距,而不是在段落内确定文本的行间距。

有没有人遇到过这个问题或者有任何关于如何解决它的例子?

我也遇到了同样的问题,并在通过ooxml-schemas源和生成的docx文件的内部后找到了解决方案。 这是代码

public void setSingleLineSpacing(XWPFParagraph para) {
    CTPPr ppr = para.getCTP().getPPr();
    if (ppr == null) ppr = para.getCTP().addNewPPr();
    CTSpacing spacing = ppr.isSetSpacing()? ppr.getSpacing() : ppr.addNewSpacing();
    spacing.setAfter(BigInteger.valueOf(0));
    spacing.setBefore(BigInteger.valueOf(0));
    spacing.setLineRule(STLineSpacingRule.AUTO);
    spacing.setLine(BigInteger.valueOf(240));
}

我最近必须使用POI的行间距,我的方法是得到段落并获得ooxml-schema

XWPFParagraph paragraph;
xml = paragraph->getCTP()->ToString();

那么模式将作为String存储在该xml变量中,您必须使用一些字符串函数从中检索该值

<w:spacing w:lineRule='atLeast' w:line='240' />

w:line是你需要的

希望这可以帮助!

paragraph.setSpacingBetween(1);

它将创建1的行间距

<w:spacing w:lineRule='atLeast' w:line='240' />

使固定

XWPFParagraph p
p.setSpacingBetween(1);
CTP ctP = p.getCTP();
CTPPr ctPr = ctP.isSetPPr() ? ctP.getPPr() : ctP.addNewPPr();
CTSpacing spacing = ctPr.isSetSpacing() ? ctPr.getSpacing() :     ctPr.addNewSpacing();
spacing.setLine(BigInteger.valueOf(200));
spacing.setBefore(BigInteger.valueOf(0));
spacing.setAfter(BigInteger.valueOf(0));
spacing.setLineRule(STLineSpacingRule.EXACT);
p.getCTP().getPPr().setSpacing(spacing);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM