Использование docx4j для полужирного указания слова в параграфе - PullRequest
0 голосов
/ 02 марта 2020

Я пытаюсь сгенерировать простой текст, подобный этому, с помощью Java в документ docx

This is **bold** test

При поиске в Интернете эта часть кода будет близкой, однако он выделяет всю строку, а не конкретное c слово

ObjectFactory factory = Context.getWmlObjectFactory();
P p = factory.createP();
R r = factory.createR();
Text text = factory.createText();
RPr rpr = factory.createRPr();
text.setValue("This is bold test");
BooleanDefaultTrue boldTrue = new BooleanDefaultTrue();
boldTrue.setVal(Boolean.TRUE);
rpr.setB(boldTrue);
r.getContent().add(text);
p.getContent().add(r);
r.setRPr(this.rpr);
mainDocumentPart.getContent().add(p);

Это выделит жирным шрифтом весь абзац, однако я просто хочу, чтобы это слово выделено жирным шрифтом и оставалось не выделенным.

Как я могу это исправить?

1 Ответ

1 голос
/ 03 марта 2020

Вы можете использовать docx4j webapp или Word Helper AddIn , чтобы сгенерировать необходимый код из подходящего примера Word docx.

В этом случае:

    // Create object for p
    P p = wmlObjectFactory.createP(); 
        // 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( "This is "); 
                text.setSpace( "preserve"); 
        // Create object for r
        R r2 = wmlObjectFactory.createR(); 
        p.getContent().add( r2); 
            // Create object for rPr
            RPr rpr = wmlObjectFactory.createRPr(); 
            r2.setRPr(rpr); 
                // Create object for b
                BooleanDefaultTrue booleandefaulttrue = wmlObjectFactory.createBooleanDefaultTrue(); 
                rpr.setB(booleandefaulttrue); 
                // Create object for bCs
                BooleanDefaultTrue booleandefaulttrue2 = wmlObjectFactory.createBooleanDefaultTrue(); 
                rpr.setBCs(booleandefaulttrue2); 
            // 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( "bold"); 
        // 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( " test"); 
                text3.setSpace( "preserve"); 

Тогда ваш mainDocumentPart.getContent (). Add (p);

...