Java Apache poi XWPF段落行距

Java Apache poi XWPF段落行距,java,apache,coldfusion,apache-poi,Java,Apache,Coldfusion,Apache Poi,我正在考虑尝试在Java/Coldfusion中使用ApachePOI构建word文档。到目前为止,除了段落的行距之外,它允许我做很多我想要的格式。有人知道我如何将段落设置为单行间距吗?它保留具有多个间隔段落的建筑文档,间距为1.15 下面是一个代码示例: document = loader.create("org.apache.poi.xwpf.usermodel.XWPFDocument"); ParagraphAlignment = loader.create("org.apache.po

我正在考虑尝试在Java/Coldfusion中使用ApachePOI构建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模式源代码和生成的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模式

XWPFParagraph段落;
xml=段落->getCTP()->ToString();
然后,模式将作为字符串存储在该xml变量中,您必须使用一些字符串函数从中检索值


w:这条线就是你需要的

希望这有帮助

paragraph.setSpacingBetween(1);

通过快速查看API,它将创建一个1

的行距,您尝试过了吗?我对此进行了研究,但API不清楚如何使用它来指定文档中的单间距、双间距和多间距。它似乎是一个枚举器,只有3个值:精确、自动和至少。这些值基于
单、双、至少、精确、多,…
POI似乎只支持其中的一个子集。这大概就是我所担心的,我找不到任何其他文档,说明如何创建一种样式来应用于段落,从而实现相同的功能。因此,从技术上讲,这不是一种修复,只是一种变通方法。我发现,如果我创建一个空白word文档,设置段落行距,保存它,并将其用作WXPFDocument的起点,我可以将其改为单行间距。从技术上讲,这不是一个很好的解决方案,因为如果需要的话,您不能来回切换,但就我而言,它可能对我有用。我如何适应这种情况?:InputStream doc=new FileInputStream(new File(“..\\entradas\\cartas\\87109.docx”);XWPFDocument document=新的XWPFDocument(doc);PdfOptions options=PdfOptions.create();OutputStream out=新文件OutputStream(新文件(“..\\entradas\\cartas\\87109docx.pdf”);PdfConverter.getInstance().convert(文档、输出、选项);系统输出打印项次(“完成”);