Как изменить шрифт на новый абзац, используя Docx4j? - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть класс DocxDocument, который имеет статический ObjectFactory объект, статический WordprocessingMLPackage объект и MainDocumentPart объект.В идеале вы должны использовать этот метод, например addTextWithFont ("Arial", "Hello")

Я пытаюсь создать метод, который добавляет абзац со шрифтомчто вы передаете это в качестве параметра.Я считаю, что мне нужно добавить объект RFonts с PhysicalFont к Rpr, но он не работает.

    public void addTextWithFont(String fontName, String text) {
        PhysicalFont font = PhysicalFonts.get(fontName);
        RFonts fonts = factory.createRFonts();
        fonts.setAscii(fontName);

        // This is the object we will add
        P p = factory.createP();

        // Create object for first run and add it to the P object
        R run = factory.createR();
        p.getContent().add(run);

        // Create rpr object
        RPr rpr = factory.createRPr();
        rpr.setRFonts(fonts);
        run.setRPr(rpr);

        // Create text object
        Text t = factory.createText();
        t.setValue(text);
        run.getContent().add(t);

        this.mainDocumentPart.addObject(p);

Спасибо

1 Ответ

0 голосов
/ 27 сентября 2018

Вам не нужен PhysicalFont.То, что у вас хорошо выглядит.

Вы также можете добавить:

fonts.setCs(fontName);
fonts.setHAnsi(fontName);

И вы можете проверить свой результат с помощью:

   System.out.println(XmlUtils.marshaltoString(p));

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

...