java - 如何在段落 docx4j 中添加空格或制表符以格式化文本
问题描述
我需要在段落中添加空格或制表符,我不能使用表格,因为在左侧我需要添加一个表格,所以它会变成一个嵌套表格。
我试试
//Paragraph without spaces or tabs
//Paragraph with spaces or tabs
P paragraph = factory.createP();
paragraph.getContent().add(factory.createTabs());
paragraph.getContent().add(factory.createRTab());
解决方案
docx4j webapp或Helper Word AddIn将为您解答这个问题。
这是我生成的代码;额外空间(强制它使用单独的运行):
<w:p>
<w:r>
<w:t>Paragraph</w:t>
</w:r>
<w:r>
<w:t xml:space="preserve"> </w:t>
</w:r>
<w:r>
<w:t>that was some space.</w:t>
</w:r>
</w:p>
假设 P p:
// Create object for r
R r = wmlObjectFactory.createR();
p.getContent().add( r);
// Create object for t (wrapped in JAXBElement)
Text text = wmlObjectFactory.createText();
JAXBElement<org.docx4j.wml.Text> textWrapped = wmlObjectFactory.createRT(text);
r.getContent().add( textWrapped);
text.setValue( "Paragraph");
// Create object for r
R r3 = wmlObjectFactory.createR();
p.getContent().add( r3);
// Create object for t (wrapped in JAXBElement)
Text text3 = wmlObjectFactory.createText();
JAXBElement<org.docx4j.wml.Text> textWrapped3 = wmlObjectFactory.createRT(text3);
r3.getContent().add( textWrapped3);
text3.setValue( " ");
text3.setSpace( "preserve");
// Create object for r
R r5 = wmlObjectFactory.createR();
p.getContent().add( r5);
// Create object for t (wrapped in JAXBElement)
Text text5 = wmlObjectFactory.createText();
JAXBElement<org.docx4j.wml.Text> textWrapped5 = wmlObjectFactory.createRT(text5);
r5.getContent().add( textWrapped5);
text5.setValue( "that was some space.");
使用标签,XML:
<w:p>
<w:r>
<w:t>Paragraph</w:t>
</w:r>
<w:r>
<w:tab/>
<w:t>that was a tab</w:t>
</w:r>
</w:p>
假设 P p:
// Create object for r
R r = wmlObjectFactory.createR();
p.getContent().add( r);
// Create object for t (wrapped in JAXBElement)
Text text = wmlObjectFactory.createText();
JAXBElement<org.docx4j.wml.Text> textWrapped = wmlObjectFactory.createRT(text);
r.getContent().add( textWrapped);
text.setValue( "Paragraph");
// Create object for r
R r2 = wmlObjectFactory.createR();
p.getContent().add( r2);
// Create object for tab (wrapped in JAXBElement)
R.Tab rtab = wmlObjectFactory.createRTab();
JAXBElement<org.docx4j.wml.R.Tab> rtabWrapped = wmlObjectFactory.createRTab(rtab);
r2.getContent().add( rtabWrapped);
// Create object for t (wrapped in JAXBElement)
Text text2 = wmlObjectFactory.createText();
JAXBElement<org.docx4j.wml.Text> textWrapped2 = wmlObjectFactory.createRT(text2);
r2.getContent().add( textWrapped2);
text2.setValue( "that was a tab");
在这种情况下,您实际上并不需要生成的代码插入的所有 JAXBElement,因此您可以根据需要稍微清理一下。
顺便说一句,docx 格式确实允许您根据需要在 tc 中嵌套表格:-)
推荐阅读
- python - 将熊猫数据框写入 sql 开发人员的问题
- sql-server - SQL Server 替换多个反斜杠
- java - 如何使用arraylist在文件中写入对象
- qt - Raspberry pi 的 Qt:“找不到 DRM 设备!”
- python - 使用多个范围时 Python SymPy 的绘图图例
- python - 创建一个 numpy 二进制网格数组
- python - Keras 自定义损失函数 InvalidArgumentError: In[1] 不是矩阵。相反,它具有形状 []
- xslt-3.0 - XSLT - 递归元数据键控元素
- javascript - 使用 Jest 模拟同一模块的不同值
- r - 如何使用 R 计算选项的响应百分比?