【问题标题】:setting POI XWPFParagraph line spacing设置 POI XWPFP 段落行距
【发布时间】:2014-08-09 17:50:06
【问题描述】:

我想在使用 POI 库创建的文档中的所有段落上设置行距。 我想将段落行距设置为 1.0,并删除段落前后的空格,但生成的文档继续使用 1.15 行距并在段落后添加空格。 这是我的代码:

for (XWPFParagraph paragraph : doc.getParagraphs()) {
        paragraph.setSpacingAfter(0);
        paragraph.setSpacingAfterLines(0);
        paragraph.setSpacingBefore(0);
        paragraph.setSpacingBeforeLines(0);
        paragraph.setSpacingLineRule(LineSpacingRule.EXACT);
        paragraph.setVerticalAlignment(TextAlignment.TOP);
    }

请帮忙, 谢谢,

【问题讨论】:

    标签: java apache-poi docx


    【解决方案1】:

    您可以使用以下代码将段落行距设置为 Single:

    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));
    }
    

    【讨论】:

      【解决方案2】:
      paragraph.setSpacingBetween(1);
      

      它将在段落的行之间创建 1 的间距。

      【讨论】:

        【解决方案3】:

        这也是另一种替代解决方案 使用它;您必须在 pom.xml 中添加 ooxml-schemas 依赖项

            CTSectPr sectPr = document.getDocument().getBody().addNewSectPr();
                CTPageMar pageMar = sectPr.addNewPgMar();
                pageMar.setLeft(BigInteger.valueOf(720L));
                pageMar.setTop(BigInteger.valueOf(720L));
                pageMar.setRight(BigInteger.valueOf(720L));
                pageMar.setBottom(BigInteger.valueOf(7200L));
        

        【讨论】:

          猜你喜欢
          • 2014-07-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-02-24
          相关资源
          最近更新 更多