Java Apache poi XWPF段落行距
我正在考虑尝试在Java/Coldfusion中使用ApachePOI构建word文档。到目前为止,除了段落的行距之外,它允许我做很多我想要的格式。有人知道我如何将段落设置为单行间距吗?它保留具有多个间隔段落的建筑文档,间距为1.15 下面是一个代码示例: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
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(文档、输出、选项);系统输出打印项次(“完成”);