Как добавить пробел или табуляцию для форматирования текста в абзаце docx4j - PullRequest
0 голосов
/ 29 марта 2019

Мне нужно добавить пробел или табуляцию в абзац, я не могу использовать таблицу, потому что слева мне нужно добавить таблицу, чтобы она стала вложенной таблицей.

Я пытаюсь

//Paragraph without spaces or tabs
//Paragraph       with spaces or tabs

P paragraph = factory.createP();
paragraph.getContent().add(factory.createTabs());
paragraph.getContent().add(factory.createRTab());

1 Ответ

1 голос
/ 29 марта 2019

Веб-приложение docx4j или Вспомогательный словарь 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");

На самом деле вам не нужны все JAXBElements, которые генерирует вставленный код, в этом случае, так что вы можете немного почистить это, если хотите.

И, кстати, кроме этого, формат docx позволяет вам вкладывать таблицу в tc, если вы хотите: -)

...