当前位置: 首页 > 知识库问答 >
问题:

DOCX4J插入换行符

东郭远航
2023-03-14
                            4 Privet Drive
                            Little Whinging
<w:p>
    <w:pPr>
        <w:tabs>
            <w:tab w:val="left" w:pos="6120"/>
        </w:tabs>
        <w:ind w:firstLine="6300"/>
        <w:rPr>
            <w:rFonts w:ascii="Arial" w:hAnsi="Arial" w:cs="Arial"/>
            <w:b/>
            <w:sz w:val="22"/>
            <w:szCs w:val="20"/>
        </w:rPr>
    </w:pPr>
    <w:r>
        <w:rPr>
            <w:rFonts w:ascii="Arial" w:hAnsi="Arial" w:cs="Arial"/>
            <w:b/>
            <w:sz w:val="22"/>
             <w:szCs w:val="20"/>
        </w:rPr>
         <w:t>$address$</w:t>
    </w:r>
</w:p>
r.clear(); //r contains the variable it's <w:r> </w:r> in my XML exemple, it's a list
org.docx4j.wml.Text text = factory.createText(); //For the street
r.add(k, text);
org.docx4j.wml.Br br = factory.createBr();
r.add(k, br);
org.docx4j.wml.Text text2 = factory.createText();
r.add(k, text2);
text.setValue(zip);
text2.setValue(street);

在新的DOCX中,我的XML如下所示:

<w:p>
    <w:pPr>
        <w:tabs>
            <w:tab w:val="left" w:pos="6120"/>
        </w:tabs>
        <w:ind w:firstLine="6300"/>
        <w:rPr>
            <w:rFonts w:ascii="Arial" w:hAnsi="Arial" w:cs="Arial"/>
            <w:b/>
            <w:sz w:val="22"/>
            <w:szCs w:val="20"/>
        </w:rPr>
    </w:pPr>
    <w:r>
        <w:rPr>
            <w:rFonts w:ascii="Arial" w:hAnsi="Arial" w:cs="Arial"/>
            <w:b/>
            <w:sz w:val="22"/>
             <w:szCs w:val="20"/>
        </w:rPr>
         <w:t>4 Privet Drive</w:t>
         <:br/>
         <w:t>Little Whinging</w:t>
    </w:r>
</w:p>

所以我不知道如何将第二行设置到第一行的相同位置?

共有1个答案

莫翰藻
2023-03-14

有两种方法可以做到这一点。

首先是使用选项卡:

    <w:p>
        <w:r>
            <w:tab/>
            <w:t>4 Privet Drive</w:t>
            <w:br/>
            <w:tab/>
            <w:t>Little Whinging</w:t>
        </w:r>
    </w:p>

对应代码,假设P P:

        // Create object for r
        R r = wmlObjectFactory.createR(); 
        p.getContent().add( r); 
            // Create object for tab (wrapped in JAXBElement) 
            R.Tab rtab = wmlObjectFactory.createRTab(); 
            JAXBElement<org.docx4j.wml.R.Tab> rtabWrapped = wmlObjectFactory.createRTab(rtab); 
            r.getContent().add( rtabWrapped); 
            // 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( "4 Privet Drive"); 
            // Create object for br
            Br br = wmlObjectFactory.createBr(); 
            r.getContent().add( br); 
            // Create object for tab (wrapped in JAXBElement) 
            R.Tab rtab2 = wmlObjectFactory.createRTab(); 
            JAXBElement<org.docx4j.wml.R.Tab> rtabWrapped2 = wmlObjectFactory.createRTab(rtab2); 
            r.getContent().add( rtabWrapped2); 
            // Create object for t (wrapped in JAXBElement) 
            Text text2 = wmlObjectFactory.createText(); 
            JAXBElement<org.docx4j.wml.Text> textWrapped2 = wmlObjectFactory.createRT(text2); 
            r3.getContent().add( textWrapped2); 
                text2.setValue( "Little Whinging"); 
    <w:p>
        <w:pPr>
            <w:ind w:left="720"/>
        </w:pPr>
        <w:r>
            <w:t>4 Privet Drive</w:t>
            <w:br/>
            <w:t>Little Whinging</w:t>
        </w:r>
    </w:p>
            // Create object for ind
            PPrBase.Ind pprbaseind = wmlObjectFactory.createPPrBaseInd(); 
            ppr.setInd(pprbaseind); 
                pprbaseind.setLeft( BigInteger.valueOf( 720) ); 
 类似资料:
  • 我一直试图填充一个word模板(.docx)文件,其中有需要替换的占位符。 我能够重写模板,但是文本没有换行符,我知道回车或新行(\r\n)在.docx文件中不起作用。我使用VariableReplace方法进行转换,但是在使用变量replace时无法放置br或factory.createbr()。 任何建议都会很有帮助。下面是我尝试的一段代码

  • 这就是我现在的代码,我试着放入“\n”、“ ”和“ ”,但都不起作用,现在我放入“\n”只是为了明确我想在哪里换行: 我的返回值放在mappingDocsVariable中,然后用以下代码生成docx文件:

  • 我有一个.docx文档,顶部有一些表格。它们包含需要替换的文本占位符,这很好。但是,这些表中的一个需要重复,并用不同的值填充。我能够深度复制表并将其添加到文档的末尾,但我不知道如何将其插入适当的位置。我尝试在模板表的索引处添加副本,但在LibreOffice中会出现“未知的图形格式”错误,即使删除了原件: 我不知道如何最好地处理这件事。

  • 问题内容: 所以我的代码看起来像这样: 我在行上得到了正确的输出形式,但是当我以后想要写它所显示的内容时,由于代码中没有代码,所以无需换行就可以写入文件。 问题答案: 只是打电话。 将为您的平台(无论是Windows还是Unix风格)提供行分隔符。

  • 问题内容: 我必须用表格制作PDF。到目前为止,它工作正常,但现在我想添加包装功能。所以我需要插入换行符。 我想在“插入”之前添加“”。我尝试了“ ”,这是换行的十六进制值,但是Eclipse显示了一个错误。 是否可以使用drawString添加换行符? 问题答案: pdf格式不知道换行符。您必须使用moveTextPositionByAmount拆分字符串并将文本位置移至下一行。 这不是特殊的“